Scalaでフィボナッチ
まずは、フィボナッチ数列の定義どおりに書いてみました。
// Fibonacci数(フィボナッチ数)fib(10)=>55, fib(20)=>6765 def fib(n:Int):Int = { if (n==0) 0 else if (n==1) 1 else fib(n-1)+fib(n-2) }
補助関数を作って末尾再帰にしてみました。
def fib2(n:Int):Int = { // a:1つ前の数、b:2つ前の数。count:計算回数。 def fibIter(a:Int, b:Int, count:Int):Int = { if (count==0) b else fibIter(a+b, a, count-1) } fibIter(1, 0, n) }