递归算法可以+999 超了这个数就报 StackOverflowError(栈溢出异常)如何解决?

浅唱1曲解脱 2011-11-07 04:05:57
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();
}

}

各位大神帮我看一下??解决了立马结贴
...全文
138 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
良才2015 2011-11-07
  • 打赏
  • 举报
回复
StackOverflowError是由于当前线程的栈满了(栈帧太多,也就是函数调用层级过多)导致。
浅唱1曲解脱 2011-11-07
  • 打赏
  • 举报
回复
谢谢!!!
艳沐石 2011-11-07
  • 打赏
  • 举报
回复
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;
}
gukuitian 2011-11-07
  • 打赏
  • 举报
回复
递归本来就不能写这么多层,你想怎么解决?
浅唱1曲解脱 2011-11-07
  • 打赏
  • 举报
回复
自己顶下!~

50,523

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧