Java递归评估

问题描述 投票:-2回答:1

我只是使用一个简单的斐波那契递归算法,但是我决定对其进行调整以进一步测试我的递归知识。

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。有人可以逐步解释我做错了什么吗?谢谢!

java recursion fibonacci
1个回答
0
投票

您有多余的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
© www.soinside.com 2019 - 2024. All rights reserved.