【问题标题】:Post-Incrementing/decrementing in recursive method calls (Java)递归方法调用中的后递增/递减(Java)
【发布时间】:2013-04-12 06:56:45
【问题描述】:

假设你有一个递归方法,并且你在递归调用中增加/减少一个值。为什么这会导致堆栈溢出异常,而预先递增/递减不会?

例如

numberCount(currentNumber++); //Stack overflow exception

numberCount(++currentNumber); //No stack overflow exception

提前感谢您的任何澄清。

【问题讨论】:

    标签: java recursion post-increment pre-increment


    【解决方案1】:

    第一个

    numberCount(currentNumber++); //Stack overflow exception
    

    相当于:

    numberCount(currentNumber);
    currentNumber += 1;
    

    第二个

    numberCount(++currentNumber); //No stack overflow exception
    

    等价于

    currentNumber += 1;
    numberCount(currentNumber);
    

    需要我解释更多吗?

    【讨论】:

    • 我要补充一下 IMO,这就是为什么您应该始终在自己的行上使用 ++ 运算符(for 循环除外)。这样你就不必考虑这个问题了。
    • @DerrekWhistle:如果答案有帮助,请不要忘记接受它(在它旁边打勾),甚至可以投票。
    • 在我的代表增加之前我不能投票,但我很乐意接受。
    【解决方案2】:

    numberCount(currentNumber++);的情况下,如果numberCount函数抛出异常,变量currentNumber会增加吗?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-07-21
      • 2017-07-05
      • 2011-12-13
      • 2013-11-25
      • 1970-01-01
      • 2014-03-21
      • 1970-01-01
      相关资源
      最近更新 更多