当前位置: 代码迷 >> Java相关 >> 递归算法可以+999 超了这个数就报 StackOverflowError(栈溢出错误)怎么解决
  详细解决方案

递归算法可以+999 超了这个数就报 StackOverflowError(栈溢出错误)怎么解决

热度:10361   发布时间:2013-02-25 21:49:47.0
递归算法可以+999 超了这个数就报 StackOverflowError(栈溢出异常)如何解决?
public class Test {

//计算的方法
public static int account(int start,int stop)throws Exception{
return (start!=stop) ? start+=(account(start+1,stop)) : start;
}
/**
* @param args
*/
public static void main(String[] args) {
try {
System.out.println(account(1,9999));
} catch (Exception e) {
e.printStackTrace();
}

}

各位大神帮我看一下??解决了立马结贴

------解决方案--------------------------------------------------------
递归本来就不能写这么多层,你想怎么解决?
------解决方案--------------------------------------------------------
java.lang.StackOverflowError

内存溢出了!因为递归的时候,需要保存处理的东西比较多,申请的内存资源也比较大。

这样你可以使用迭代的方法:
public static int acc(int start, int stop) {
int sum = 0;
int temp = start;
int end = stop + 1;

while (temp < end) {
sum += temp++;
}

return sum;
}
  相关解决方案