編寫生產質量的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. 從遞歸函數產生
- 9. MPL序列和遞歸代碼生成
- 10. 遞歸發生器代碼修正
- 11. 用Hamlet遞歸生成HTML代碼
- 12. KTouring遞歸代碼
- 13. 遞歸代碼非循環遞歸
- 14. 降低位圖質量產生OutOfMemoryException
- 15. wxmediactrl產生差的視頻質量
- 16. 生產與質量保證配置
- 17. 開發/質量保證/生產環境
- 18. 提高代碼質量?
- 19. 在python中產生遞歸函數
- 20. 遞歸方法產生#SubscriptOutOfBounds:8
- 21. 爲指針產生遞歸模板
- 22. 遞歸python函數產生anagrams列表
- 23. SQL查詢,將產生child_id遞歸
- 24. Python中的遞歸代碼
- 25. 遞歸算法僞代碼
- 26. 遞歸序列代碼
- 27. Deobfuscate PHP代碼(遞歸)
- 28. 瞭解遞歸代碼
- 29. 遞歸難題C++代碼
- 30. 如何衡量我的代碼質量?
它還沒死!它正在尋找峽灣。 – Aardvark 2008-09-24 13:16:56