通常递归实现 :ide
或者:spa
function fibonacci(n){code
if(n<2)递归
return n;ci
elseit
return fibonacci(n-1)+fibonacci(n-2);io
}function
尾递归实现:class
跟这样的迭代方法是彻底等价的:import
C# 版:
传统的递归方式以下:
public static int FibonacciRecursively(int n) { if (n < 2) return n; return FibonacciRecursively(n - 1) + FibonacciRecursively(n - 2); }
而改形成尾递归,咱们则须要提供两个累加器:
public static int FibonacciTailRecursively(int n, int acc1, int acc2) { if (n == 0) return acc1; return FibonacciTailRecursively(n - 1, acc2, acc1 + acc2); }