Java 斐波那契递归返回无穷数

Java 斐波那契递归返回无穷数,java,recursion,fibonacci,Java,Recursion,Fibonacci,我的代码结果是无穷的数字“2”,我不明白为什么 我的导师还告诉我要为负值添加验证——我不知道怎么做 public class FibonacciRecursive { public static void main(String[] args) { int fibonacciNumberOrder = 10; do { System.out.print(fibonacci(fibonacciNumberOrder) + "

我的代码结果是无穷的数字“2”,我不明白为什么

我的导师还告诉我要为负值添加验证——我不知道怎么做

    public class FibonacciRecursive {

   public static void main(String[] args) {
        int fibonacciNumberOrder = 10;
        do {
            System.out.print(fibonacci(fibonacciNumberOrder) + " ");

        } while (true);
    }

    public static long fibonacci(int fibonacciNumberInOrder) {
        if (fibonacciNumberInOrder == 0) {
            return 0;
        }
        if (fibonacciNumberInOrder <= 2) {
            return 1;
        }
        long fibonacci = fibonacci(-1) + fibonacci(-2);
        return fibonacci;
    }
}
致:

它打印出无尽的“55”


我应该如何更改代码以使其正常工作?

您正在使用常量进行递归!改变这个

long fibonacci = fibonacci(-1) + fibonacci(-2);

而且,在
while
循环的
main
中,您需要修改
fibonacciNumberInOrder

int fibonacciNumberOrder = 1;
do {
    System.out.print(fibonacci(fibonacciNumberOrder) + " ");
    fibonacciNumberOrder++;
} while (true);

您正在使用常量进行递归!改变这个

long fibonacci = fibonacci(-1) + fibonacci(-2);

而且,在
while
循环的
main
中,您需要修改
fibonacciNumberInOrder

int fibonacciNumberOrder = 1;
do {
    System.out.print(fibonacci(fibonacciNumberOrder) + " ");
    fibonacciNumberOrder++;
} while (true);

之所以会发生这种情况,是因为计算斐波那契数时使用的是常数,而不是传递的相对数,这就是递归点

public static long fibonacci(int fibonacciNumberInOrder) {
    if (fibonacciNumberInOrder == 0) {
        return 0;
    }
    if (fibonacciNumberInOrder <= 2) {
        return 1;
    }
    long fibonacci = fibonacci(fibonacciNumberInOrder - 1) + fibonacci(fibonacciNumberInOrder - 2);
    return fibonacci;
}

之所以会发生这种情况,是因为计算斐波那契数时使用的是常数,而不是传递的相对数,这就是递归点

public static long fibonacci(int fibonacciNumberInOrder) {
    if (fibonacciNumberInOrder == 0) {
        return 0;
    }
    if (fibonacciNumberInOrder <= 2) {
        return 1;
    }
    long fibonacci = fibonacci(fibonacciNumberInOrder - 1) + fibonacci(fibonacciNumberInOrder - 2);
    return fibonacci;
}

现在它的结果是无休止的“55”@user944047您对
System.out.print(fibonacci(fibonaccinumberrorder)+”)有什么期望你总是在哪里传递10?我想为负值添加验证,但我想这不是一种方法?我对编码是新手。那么,我应该怎么做才能添加对负值的验证,并看到十个斐波那契数,而不是每十个?您已经有了对负值的验证:
if(fibonacciNumberInOrder)现在它的结果是无休止的“55”@user944047
System.out.print(fibonacci(fibonaccinumberrorder)+”)
你总是在哪里传递10个?我想为负值添加验证,但我想这不是一种方法。我对编码是新手。那么,我应该怎么做才能为负值添加验证并看到10个斐波那契数,而不是每10个?你已经有了负值验证:
如果(Fibonaccinumberi顺序你到底想要达到什么?预期的输出是什么?当我要求10时,我希望它打印“1,1,2,3,5,8,13,21,34,55”,或者如果我要求5,那么我希望它:“1,1,2,3,5”。我想要一个序列。你到底想要达到什么?预期的输出是什么?我希望它打印出来“1,1,2,3,5,8,13,21,34,55”当我要10,或者如果我要5,那么我想要它:“1,1,2,3,5”。我想要一个序列。
long fibonacci = fibonacci(fibonacciNumberInOrder-1) + fibonacci(fibonacciNumberInOrder-2);