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));
}
}
Run Code Online (Sandbox Code Playgroud)
这个程序遇到运行时异常(stackoverflow)请告诉如何处理它.
您逐步调试调试器中的代码,您将看到它
return fib((n-1)+fib(n-2));
Run Code Online (Sandbox Code Playgroud)
应该
return fib(n-1) + fib(n-2);
Run Code Online (Sandbox Code Playgroud)
就像你拥有的一样
return fib(fib(n-2));
Run Code Online (Sandbox Code Playgroud)
这很快就会产生很高的递归水平.
| 归档时间: |
|
| 查看次数: |
99 次 |
| 最近记录: |