Java 使用递归错误的斐波那契级数? 公共类Fibonacci2{ 静态整数fib(整数n){ 如果(n==1 | | n==2){ 申报表(1); } 返回fib((n-1)+fib(n-2)); } //堆栈溢出错误// 公共静态void main(字符串[]args){ int i,n=7; 对于(i=1;i
您在调试器中单步执行代码,您将看到Java 使用递归错误的斐波那契级数? 公共类Fibonacci2{ 静态整数fib(整数n){ 如果(n==1 | | n==2){ 申报表(1); } 返回fib((n-1)+fib(n-2)); } //堆栈溢出错误// 公共静态void main(字符串[]args){ int i,n=7; 对于(i=1;i,java,Java,您在调试器中单步执行代码,您将看到 public class Fibonacci2 { static int fib(int n) { if(n==1 || n==2) { return(1); } return fib((n-1)+fib(n-2)); } // Stackoverflow error // public static void main(String[] args) { int i, n = 7; for(i=1; i<=n; i++)
public class Fibonacci2 {
static int fib(int n) {
if(n==1 || n==2) {
return(1);
}
return fib((n-1)+fib(n-2));
}
// Stackoverflow error //
public static void main(String[] args) {
int i, n = 7;
for(i=1; i<=n; i++)
System.out.println("FIbonaci series" + fib(i));
}
}
应该是
return fib((n-1)+fib(n-2));
就像你所拥有的一样
return fib(n-1) + fib(n-2);
这会很快产生非常高的递归级别。用
fib(n-1)+fib(n-2)替换fib(n-1)+fib(n-2)
可能会对您有所帮助
return fib(fib(n-2));
public static void fib(int initial, int current, int n) {
int sum = 0;
sum = initial + current;
if (initial == 0) {
System.out.print(current + " ");
}
System.out.print(sum + " ");
initial = current;
current = sum;
if (n > 2) {
fib(initial, current, n - 1);
}
}