我只是使用一个简单的斐波那契递归算法,但是我决定对其进行调整以进一步测试我的递归知识。
class fibonacci
{
static int fib(int n)
{
if (n <= 1)
return n;
int num = fib(n-1) + fib(n-2);
num += 1;
return num;
}
public static void main (String args[])
{
int n = 4;
System.out.println(fib(n));
}
}
我很难评估这一点,因为我得到7作为输出,但是当我评估它时却得到4。有人可以逐步解释我做错了什么吗?谢谢!
您有多余的num + = 1,我无故看到。我认为,您正在尝试纠正仅未通过该步骤的情况。
根据您的代码:
fib(0) is 0
fib(1) is 1
fib(2) is fib(1) + fib(0) + 1 which is 2
fib(3) is fib(2) + fib(1) + 1 which is 4
fib(4) is fib(3) + fib(2) + 1 which is 7