dezun 2014-12-23 07:07 采纳率: 0%
浏览 1964

java.lang.StackOverflowError的问题

很简单的一段代码,也知道是哪里错误,就是不明白为什么,希望大侠们指教指教
当调用main.drop(6000) 就报错了, drop(int times)方法里调用了自身的方法,这样为什么会导致报错呢

```public class Main {
private double TotalHeight = 100;
private double CurHeight = 50;

public void drop(int times) {
if ((times - 1) == 0) {
return;
}

setTotalHeight(getTotalHeight() + 2 * getCurHeight());
setCurHeight(getCurHeight() / 2);

drop(times - 1);
}

public double getTotalHeight() {
return TotalHeight;
}

public void setTotalHeight(double totalHeight) {
TotalHeight = totalHeight;
}

public double getCurHeight() {
return CurHeight;
}

public void setCurHeight(double curHeight) {
CurHeight = curHeight;
}

public static void main(String[] args) {
Date startDate = new Date();

Main main = new Main();

main.drop(50000); // 此处达到6000的时候就报标题上面的错误

System.out.println("Total height is " + main.getTotalHeight());
System.out.println("Current height is " + main.getCurHeight());
}
}


  • 写回答

3条回答 默认 最新

  • bdmh 优质创作者: 移动开发技术领域 2014-12-23 07:11
    关注

    递归太深了,stack分配给递归的空间是有限的,如果你的递归太深,stack耗尽,就会报堆栈溢出

    评论

报告相同问题?