请解释以下简单代码:
public int fibonacci(int n) { if(n == 0) return 0; else if(n == 1) return 1; else return fibonacci(n - 1) + fibonacci(n - 2); }
我对最后一行感到困惑,特别是因为例如,如果n = 5,则将调用fibonacci(4)+ fibonacci(3),依此类推,但我不理解该算法如何以此来计算索引5的值方法。请详细解释!
在斐波那契数列中,每一项都是前两项的总和。因此,你编写了一个递归算法。
所以,
fibonacci(5) = fibonacci(4) + fibonacci(3) fibonacci(3) = fibonacci(2) + fibonacci(1) fibonacci(4) = fibonacci(3) + fibonacci(2) fibonacci(2) = fibonacci(1) + fibonacci(0)
现在你已经知道了fibonacci(1)==1 and fibonacci(0) == 0。因此,你可以随后计算其他值。
fibonacci(1)==1 and fibonacci(0) == 0
现在,
fibonacci(2) = 1+0 = 1 fibonacci(3) = 1+1 = 2 fibonacci(4) = 2+1 = 3 fibonacci(5) = 3+2 = 5
从斐波那契数列中0,1,1,2,3,5,8,13,21....我们可以看到5th element斐波那契数列返回5。
0,1,1,2,3,5,8,13,21....
5th element