Java 斐波那契递归返回无穷数
我的代码结果是无穷的数字“2”,我不明白为什么 我的导师还告诉我要为负值添加验证——我不知道怎么做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) + "
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”@user944047System.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);