同样,我仍在使用递归,我有一个关于基本案例的问题。
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 = to 1。所以我将第一个基本情况更改为 n<=1 并得到了相同的答案。
现在的问题是,假设我按如下方式调用该方法: fib(2,3,6) 答案应该是 = 21 (第 2 行 = "n<=1")但是当第 2 行是 "n<=0"答案是 27。
我想知道当 n 最终 = 1 给定第 2 行中的 "n<=0" 时程序会发生什么