通常遞歸實現 :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); }