我寫了一個Java遞歸方法來計算n從0到n的總和。這裏的代碼:遞歸求和堆棧溢出
private static long sum (long n) {
if (n == 0) {
return 0;
} else {
return n + sum(n-1);
}
}
當我通過一個大的數字,如11000及以上,有時會發生堆棧溢出。是的,我有時會說。當n大於或等於11000時,程序運行並給出答案或堆棧溢出。
任何人都可以解釋發生了什麼?
相關:[什麼是最大深度的Java調用堆棧?](http://stackoverflow.com/questions/4734108/what-is-the-maximum-depth-of-the-java-call-stack ) –
請考慮使用[For-loop](https://docs.oracle.com/javase/tutorial/java/nutsandbolts/for.html)。 –
@AlanTuning考慮使用'n *(n + 1)/ 2'代替:) –