【发布时间】:2012-02-16 09:52:18
【问题描述】:
请解释一下这个简单的代码:
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) 将被调用,依此类推,但我不明白这个算法如何计算 index 处的值5 用这种方法。请详细解释!
【问题讨论】:
-
请注意,这是递归的并且在指数时间内运行。对于较大的 N 值,它的效率很低。使用迭代方法,我能够计算序列中的前 10,000 个数字。他们可以在这里找到 - goo.gl/hnbF5
-
@AdamFisher:您能分享一下您用于按顺序计算 10,000 个数字的代码吗?我其实很想知道它。
-
@AdamFisher 您提到的链接已失效。
-
本视频10分钟了解递归函数youtube.com/watch?v=t4MSwiqfLaY
-
还有一种迭代方法对您来说可能不太困难。关于递归和迭代的精彩文章,代码在这里 - codeflex.co/java-get-fibonacci-number-by-index