首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

java运行时会栈溢出这是为何

2013-03-02 
java运行时会栈溢出这是为什么啊public class demo01 {public static void main(String[] args) {for(int

java运行时会栈溢出这是为什么啊

public class demo01 {
public static void main(String[] args) {
for(int x=0;x<12;x++){
System.out.println(fun(x));
}
}
public static int fun(int i){
if(i==1 || i==2)
return 1;
else
return fun(i-1)+fun(i-2);
}
}

[解决办法]
Fibonacci数列啊,你的for循环从0开始,但是fun(0)=fun(-1)+fun(-2),这样会一直递归下去,当然最后StackOverflow
[解决办法]
F(0)死了!
[解决办法]
引用:
Java code
public class demo01 {
    public static void main(String[] args) {
        for(int x=0;x<12;x++){
            System.out.println(fun(x));
        }
    }
        public static int fun(int i……


for (int x = 12; x > 0; x--) {
System.out.println(fun(x));
}

[解决办法]
1.结束条件不对,楼上均正解
2.递归算法不够好,Java栈保存了很多不必要的信息,数据量一大不是太慢就是会栈溢出。建议把递归改成尾递归进而改成迭代的形式,或者使用二阶矩阵二分法相乘的算法。(不过貌似这个算法的运行时间不比把当前递归换成迭代的形式,你写个性能测试的程序测试下)

热点排行
Bad Request.