原因
递归过深,栈桢数超过虚拟机栈数(一个线程在计算时所需要的栈大小 > 配置允许最大的栈大小)
解决方法
- 循环方法替代实现
- 限制递归次数
例
Fibonacci 函数
public class Fibonacci {
public static int fibonacci(int n){
if (n == 0)
return 0;
if (n == 1)
return 1;
return fibonacci(n-1)+fibonacci(n-2);
}
public static void main(String[] args){
System.out.println(fibonacci(1));
System.out.println(fibonacci(3));
System.out.println(fibonacci(9));
//System.out.println(fibonacci(1000000)); 第二次运行
}
}
输出结果无误
第二次运行测试,当将最后一行改为1000000时