函數的遞歸C++
回答
每次調用一個函數時,它都需要運行時棧上的空間。這是該函數本地的變量分配內存的地方。發生的事情是,你遞歸很多次,以至於堆棧空間不足 - 堆棧溢出。 (!這個網站的名稱)
+1 ..但允許的最大*遞歸是什麼?這是什麼因素?此外,示例情況*可能*在優化/內聯(由什麼/哪裏?)下TCO'd .. – 2013-02-03 00:07:13
@pst,他的答案是否意味着它是類似於(堆棧空間量)/(空間量該函數採用堆棧)。我想象了下來。 編輯:這是忽略尾遞歸,這可能會永遠... –
@DavidD我只是想繪製出更詳細的迴應。我有點好奇,如果C/C++有什麼具體的話(保證,禁止或宣佈UB)關於這種情況。 – 2013-02-03 00:12:47
每當一個函數被調用系統存儲的堆棧調用,在這種情況下,系統將繼續存儲函數調用,直到系統堆棧滿。這個狀態被稱爲堆棧溢出。
- 1. C++遞歸函數
- 2. 遞歸函數C++
- 3. C中的遞歸函數#
- 4. 遞歸素數函數C++
- 5. 遞歸函數中的Pow函數C++
- 6. 遞歸函數使用C#
- 7. C遞歸函數 - GCD
- 8. C蠻力遞歸函數
- 9. 大量函數遞歸 - C++
- 10. 遞歸函數用C
- 11. 遞歸在C++函數
- 12. 在遞歸函數[C]
- 13. C++遞歸Febonacci函數
- 14. C++多重遞歸函數
- 15. 一個遞歸函數C++
- 16. 無效函數C遞歸
- 17. c傳遞指針遞歸函數
- 18. 遞歸函數
- 19. 遞歸函數
- 20. 遞歸函數
- 21. 遞歸函數
- 22. 遞歸函數
- 23. 遞歸函數
- 24. 遞歸函數
- 25. 遞歸函數
- 26. 遞歸函數
- 27. 遞歸函數
- 28. 遞歸函數
- 29. 遞歸函數
- 30. 遞歸函數
計算機上沒有任何限制,甚至沒有堆棧大小 –
260k是相當不錯的。在其他一些環境中,它會減少很多。考慮更新/改進問題:標題(如何允許多遞歸)和帖子中的問題(爲什麼發生seg-fault)會發生分歧。 – 2013-02-03 00:08:46