2013-04-19 125 views
3

假设您有递归方法,并且您在递归调用中后递增/递减值。为什么这会导致堆栈溢出异常时,预增加/减量不会?递归方法调用中的递增/递减(Java)

Ex。

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

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

在此先感谢您的任何澄清。

回答

10

第一

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

相当于:

numberCount(currentNumber); 
currentNumber += 1; 

而第二

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

相当于

currentNumber += 1; 
numberCount(currentNumber); 

需要我解释更多?

+0

我想添加IMO,这就是为什么你应该总是在自己的行上使用++运算符(for循环除外)。这样你就不必考虑这个问题。 –

+0

@DerrekWhistle:如果答案是有用的,请不要忘记接受它(旁边的复选标记),甚至可以放弃它。 – jlordo

+0

直到我的代表增加,我都无法赞成,但我很乐意接受它。 –

0

如果是numberCount(currentNumber++);,如果numberCount函数抛出异常,变量currentNumber会递增吗?