作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
同样,我仍在使用递归,我有一个关于基本情况之一的问题。
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 将 = 1。因此我将第一个基本情况更改为 n<=1 并得到了相同的答案。
现在的问题是,假设我按如下方式调用该方法:fib(2,3,6)答案应该是 = 21 (第 2 行 = "n<=1")但当第 2 行为“n<=0”时,答案为 27。
我想知道当第 2 行给出“n<=0”时 n 最终 = 1 时程序会发生什么
最佳答案
n为1时的调用会产生两次n为0和n为-1的额外递归调用。这两个递归调用会将 a
添加两次到正确答案中。
关于java - 斐波那契递归前,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19395920/
我是一名优秀的程序员,十分优秀!