Java 斐波那契序列打印错误值

Java 斐波那契序列打印错误值,java,Java,斐波那契在Java中的实现: public class Fibonacci { private int fibonacci(int n){ return n < 2 ? n : fibonacci(n - 1) + fibonacci(n - 2); } private void test(){ System.out.println(fibonacci(4)); } public static void mai

斐波那契在Java中的实现:

 public class Fibonacci {

    private int fibonacci(int n){
        return n < 2 ? n : fibonacci(n - 1) + fibonacci(n - 2);
    }

    private void test(){
        System.out.println(fibonacci(4));
    }

    public static void main(String[] args) {
        Fibonacci test = new Fibonacci();
        test.test();

    }

}

那么,我的Java实现有什么问题吗?

Java中的fibonacciint n将为n=0返回0。您希望始终为n返回1这与语言无关

第一个返回序列0112355813

第二个返回序列111235813


由您决定要哪个序列。

是的,我知道,第一个序列返回n而不是1,其中n可以是0。这是一个疏忽,事实上,两者都被使用了。很抱歉,我只是看了一下序列,以为我看到了别的东西。我知道这与语言无关。我只是想知道为什么它们是不同的输出,很明显其中一个有问题。@JohnMerlino在我的第一条评论中看到了链接。这两个序列都被使用。是的,除了决定需要哪个序列外,还必须决定是调用第一个元素F[0]还是F[1],即fibonacci0还是fibonacci1。
                        fibonacci(4)
            fibonacci(3)                                 fibonacci(2)
      fibonacci(2)      fibonacci(1)            fibonacci(1)        fibonacci(0)
fibonacci(1) fibonacci(0)   1                      1                         1
    1            1
 return n < 2 ? n : fibonacci(n - 1) + fibonacci(n - 2);
 return n < 2 ? 1 : fibonacci(n - 1) + fibonacci(n - 2);
f(4)
f(3)+f(2)
(f(1)+f(2))+(f(0)+f(1))
(1+(f(0)+f(1)))+(0+1)
(1+0+1)+(0+1)
2+1
3
f(4)
f(3)+f(2)
(f(1)+f(2))+(f(0)+f(1))
(1+(f(1)+f(1)))+(1+1)
(1+1+1)+(1+1)
3+2
5