Scala再帰関数


詳細
いちさいきかんすう
関数式プログラミングにおいてサイクルを実現する技術.
例:nを計算!
def factorial (n:Int):Int = 
  if (n<=0) 1
  else n * factorial(n-1)
 
にじゅうかいきかんすう
最後の再帰関数のすべての再帰形式の呼び出しは、関数の最後に表示されます.
コンパイラが関数呼び出しを検出したときに最後に再帰すると、スタックで新しいレコードを作成するのではなく、現在のアクティブレコードが上書きされます.
 
トリプルコードpackage test_first
  • object tailrec extendsApp{
  • @annotation.tailrec def factorial(n:Int,m:Int):Int= if(n<=0) m else factorial(n-1,m*n)
  • println(factorial(5,1))
  • }
     
    120