2015-10-14 51 views
-2

我正在制作一个猴子爬树的程序。为什么程序抛出StackOverflowError?

10英尺需要10分钟。他倒退3分钟并休息10分钟。

我写的代码当我在纸上追踪它时,我认为它工作,但是当我运行程序时返回堆栈溢出。

*编辑 - 好吧所以不知何故我不再得到堆栈溢出,但我没有得到我需要的结果。无论poleHeight如何,它都会打印30。我试图追踪它,但我不知道我在哪里犯了一个错误。

for poleHeight = 18;

static double climbTime(double poleHeight){ 

    double time = 0.0; 
    double t = 10.0; 
    double climbed = 7.0; 

    //base case 
    if(poleHeight <= 10.0){ 
     time = poleHeight; 
    } 
    else{ 
     poleHeight = poleHeight - climbed; 
     t = t + 10.0; 
     climbTime(poleHeight); 
    } 

    return (time + t + 10.0); 

} 
+2

什么是你的问题? –

+0

你测试了哪些数字?你必须使用一个非常大的数字来'poleHeight'来得到一个'StackOverflowError'。 –

+0

抛出异常,不返回。 – EJP

回答

0

如果你有堆栈溢出 - 这意味着无论你的基本情况是不正确的,或者您堆栈尺寸太小的任务(这不太可能)

+0

基本情况应该成立。我正在减去这个数字,所以最终它应该变成10呢? – cee

相关问题