2013-04-19 79 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會遞增嗎?