【发布时间】:2010-03-09 18:36:39
【问题描述】:
代码如下:
class qual
{
public static int fibonacci(int n)
{
if (n == 0 || n == 1)
{
return 1;
}
else
{
return fibonacci(n-1) + fibonacci(n-2);
}
}
public static void main(String[] arg)
{
System.out.println(fibonacci(5));
}
}
输出为 8。
输出应该是 8,但是当我看到这个时,我认为它应该是 7 ((5-1) +(5-2))。
为什么输出是 8?我认为获得 8 的原因可能会使递归不再让我感到困惑。
【问题讨论】:
-
又一个“我的家庭作业”问题。
-
(5-1) 和 (5-2) 是您用来再次调用该方法的参数,而不是您添加和返回的值。
-
你忘了这个stackoverflow.com/questions/2406824/… 吗? :)
-
0, 1, 1, 2, 3, 5, 8, ... -- 你知道斐波那契数列是什么,不是吗? en.wikipedia.org/wiki/Fibonacci_number
-
@muxecoid 这不是我的作业。我正在尝试自学 Java,但我无法理解递归。