同样,我仍然在使用递归,我有一个关于基本情况之一的问题。斐波那契递归ex
UPD:a和b代表序列中的第一个数字,n是要计算总和的期望位置。
我的代码如下:
public static int fib(int a, int b, int n) {
if (n <=1) {
return a;
} else if (n == 2) {
return b;
} else {
return (fib(a, b, n - 1) + fib(a, b, n - 2));
}
}
在2号线,在我开始手工描绘出该程序,我保持它为“n < = 0”。然而,当我追踪并运行程序时,我得到了一个差异答案。问题出现在n will = = 1的地方。于是我将第一个基本情况改为n < = 1并得到了相同的答案。
现在的问题是,假设我调用的方法如下:FIB(2,3,6-) 答案应该是= 21(与线2 =“N < = 1”) 但是当第2行是“N < = 0”的答案是27
我想知道当n =最终1比2号线
那么,接下来会发生什么呢,就是调用带有'n-1'和'n-2'的'fib',并添加这些结果(您的最后一个块)。你为什么不在程序中调试这个或者写一些老学校的'System.out.println'消息并且看看你的自己?比在这里提问更快。 – Matthias
阅读[call stack](http://en.wikipedia.org/wiki/Call_stack)和[递归](http://en.wikipedia.org/wiki/Recursion_%28computer_science%29)上的wikipages –