Java fibonacci堆栈溢出错误
我不会出错,即使我只输入了1,我能问一下为什么吗 您不处理Java fibonacci堆栈溢出错误,java,stack-overflow,Java,Stack Overflow,我不会出错,即使我只输入了1,我能问一下为什么吗 您不处理num==0的情况,因此当调用fibonacci(0)时,递归永远不会结束,当堆栈已满时会导致StackOverflowError 您可以通过更改循环的范围来解决此问题 public static void one() { Scanner sc = new Scanner(System.in); System.out.println("Enter a number:"); int i = sc.nextInt(); Sys
num==0
的情况,因此当调用fibonacci(0)
时,递归永远不会结束,当堆栈已满时会导致StackOverflowError
您可以通过更改循环的范围来解决此问题
public static void one() {
Scanner sc = new Scanner(System.in);
System.out.println("Enter a number:");
int i = sc.nextInt();
System.out.println(fibonacci(j));
}
for(int j=1;j在for语句中,以0开头。这是fibonacci Funktion的第一个输入。请尝试:
public static int fibonacci(int num) {
if (num <= 1) {
return 0;
}
else if (num == 2 || num == 3){
return 1;
}
else {
return fibonacci(num-1) + fibonacci(num-2);
}
}
publicstaticvoidone(){
扫描仪sc=新的扫描仪(System.in);
System.out.println(“输入一个数字:”);
int i=sc.nextInt();
对于(int j=1;j我认为您没有处理零。请尝试以下循环
public static void one() {
Scanner sc = new Scanner(System.in);
System.out.println("Enter a number:");
int i = sc.nextInt();
for (int j=1; j<i; j++) {
System.out.println(fibonacci(j));
}
for(int j=1;j)您的循环以j=0开始,您的fibonacci
方法的结果是什么?了解断点
。然后逐步查看代码以了解发生了什么。这对于developers@Gökhanplat只有在忽略fibonacci(0)这一事实的情况下当您考虑Fibonacci从零开始的事实时,该解决方案提供了工作。例如,当您输入的总数为我所提供的解决方案的4输出时,0×1 1 2(总数4),但是用罗伯特提供的解决方案,您将得到输出-0 1 1(总数3)。
public static int fibonacci(int num) {
if (num <= 1) {
return 0;
}
else if (num == 2 || num == 3){
return 1;
}
else {
return fibonacci(num-1) + fibonacci(num-2);
}
}
public static void one() {
Scanner sc = new Scanner(System.in);
System.out.println("Enter a number:");
int i = sc.nextInt();
for (int j=1; j<i; j++) {
System.out.println(fibonacci(j));
}
for (int j=1; j<=i; j++) {
System.out.println(fibonacci(j));
}