編寫生產質量的VC++代碼時,使用遞歸是否可以接受?爲什麼或者爲什麼不?生產質量遞歸VC++代碼
1
A
回答
6
有沒有辦法確定我會在什麼時候遇到堆棧溢出?
不是。當你用盡堆棧空間堆棧溢出發生 - 不過......
- 初始堆棧大小可以通過編程改變並且可能默認爲根據您的OS /編譯器不同量的/ etc
- 多少錢呢已經用完了,取決於你的應用程序(以及你的應用程序使用的庫)以前做過的事情 - 這通常是不可能預測的
- 每次調用需要多少堆棧取決於你在函數中做了什麼。如果你只在堆棧中分配1個整數,你可能會遞減一個很大的時間,但是如果你在堆棧上分配一個200k的緩衝區,不是那麼多。
我曾經碰到過的唯一一次是在無限循環中,或者使用上述的200k緩衝區。
我發現它比我的應用程序更容易崩潰,比它使用100%CPU永遠循環並且必須被強制殺死(這是遠程服務器上的正確PITA,因爲窗口不足SSH)
一個粗略的指南:你認爲你的遞歸函數有可能自稱超過連續10,000次?還是你在做一些愚蠢的事情,比如在堆棧上分配200k緩衝區?
如果是,請擔心。
如果不是,繼續進行更重要的事情。
2
是的。但從來沒有死代碼。那會很愚蠢。
0
當然 - 例如如果你想遍歷一個樹結構你還會使用什麼?
也許你想有一個像最大深度的東西,以確保你不寫無限循環。 (如果這是有道理的在你的例子)
0
有沒有一種方法來確定在什麼 點我會遇到一個堆棧溢出 ?
取決於你走得有多深,以及實際遞歸有多大。我認爲你明白遞歸做什麼?
0
遞歸對遍歷文件結構(如文件夾/目錄)來說幾乎是必不可少的。
如果使用遞歸,遍歷樹狀結構非常容易。
相關問題
- 1. SVN到生產質量代碼
- 2. 遞歸產量
- 3. 代碼質量
- 4. 生產質量WPF示例
- 5. 遞歸產生排列
- 6. 從遞歸函數產生
- 7. 遞歸發生器代碼修正
- 8. 降低位圖質量產生OutOfMemoryException
- 9. 生產與質量保證配置
- 10. wxmediactrl產生差的視頻質量
- 11. 開發/質量保證/生產環境
- 12. 提高代碼質量?
- 13. 遞歸方法產生#SubscriptOutOfBounds:8
- 14. Deobfuscate PHP代碼(遞歸)
- 15. 瞭解遞歸代碼
- 16. 遞歸多人遊戲中的產量
- 17. 在python產量+遞歸惹惱了我
- 18. 如何衡量我的代碼質量?
- 19. 零生產代碼的TDD
- 20. 剝離代碼生產
- 21. System.Diagnostics.Debug.WriteLine在生產代碼
- 22. 代碼生成UpperEmail財產
- 23. 生產代碼和端口
- 24. LWJGL代碼產生黑屏
- 25. 剔除生產代碼
- 26. 生產剖析代碼
- 27. 字段變量產生與局部變量遞歸不同的結果
- 28. CTE代碼只是抓住錨不遞歸遞歸
- 29. 自動生成代碼以批量生產。這是否合理?
- 30. 遞歸線之後的代碼會發生什麼?
它還沒死!它正在尋找峽灣。 – Aardvark 2008-09-24 13:16:56