我有2年的IT經驗。我沒有看到任何遞歸代碼。我想知道是否有任何公司或組織在其生產環境中使用遞歸代碼。如果有些人也解釋用例,那將是很棒的。誰和何時在生產環境中使用遞歸代碼
回答
所有使用可變參數模板的代碼都必須使用遞歸,請參閱參考資料。 http://kevinushey.github.io/blog/2016/01/27/introduction-to-c++-variadic-templates/。
this question的答案給出了一些遞歸示例。最有說服力的是爲遞歸定義的語言(如C和大多數其他塊,其中塊可以包含塊,表達式表達式等)的手編編譯器(或者說是語法分析器)實現。也許這對我來說是最令人信服的,因爲我在CS課程中這樣做了,但仍然如此。即使在這種情況下,生產編譯器也可能使用工具創建並且不是遞歸的。如果有人澄清了gcc或其他開源編譯器的內部工作原理,我會很感激。
我通常會假定某些處理遞歸深度遞歸數據結構的程序(如平衡樹,而不是普通樹或列表)使用遞歸,僅僅因爲它簡單而優雅,並且深度限制將刪除遞歸的最大障礙。
回想一下,我實際上已經使用遞歸來解析一個簡單的「選項語言」,用於一個具有選項-eval <file>
的內部定製程序,其中引用文件包含更多選項,可能包含更多-eval
s。引用的文件確實是遞歸評估的。
爲了您的信息,我在前幾天進入IT公司,在生產環境中使用它來編寫遞歸代碼。如果你想c,我可以發送一些遞歸代碼示例
我不需要示例。我只是好奇,在什麼情況下需要用遞歸而不是任何替代方法。 – shubham12511
@ sbmc7你從字面上問「我想知道如果有任何公司或組織使用遞歸代碼」,並且smn說「是的,我們做了!」。這清楚地回答了這個問題。如果你不喜歡這個答案,你可能想把你的問題改爲「在什麼情況下[某人需要用遞歸而不是任何替代方法去做」,這是一個更有趣的問題,因爲這是絕對不可能的沒有公司曾經使用過遞歸。 (順便說一下,有沒有很多替代方法,有嗎?只有一個。) –
@ sbmc7讓我給你一個例子,我們有一個場景,就像我們有一個進程proc1,直到進程2完成後才能運行所以我做了一個技巧,我寫了一個主要的過程,在這個過程中,我寫了1個IF else語句,就好像過程2成功運行,然後只有過程1有了它的插槽,否則它需要2分鐘的睡眠時間,然後再次調用它自己。希望現在對你有點清楚。 –
如果程序基本上是CRUD(創建,檢索,更新,刪除)界面到某種數據庫的界面,你不會看到太多的遞歸調用。這是很多嚴肅的現實世界的編程。
但是大量的程序有樹。例如。藝術品樹或3D動畫對象樹。一旦你使用樹木,遞歸是解決問題的最簡單方法。
還有「函數式編程」範例,用遞歸替代迭代。它有一些理論上的好處,並且在某些環境中使用,雖然它仍然有點學術性和實驗性。
函數式編程最近引起了很多關注,因爲它與並行執行(共享數據較少)保持一致。 –
- 1. 生產質量遞歸VC++代碼
- 2. 在生產環境中保護密碼
- 3. 在生產環境中使用DropCreateDatabaseIfModelChanges
- 4. 在生產環境中使用HSQLDB
- 5. 在生產環境中使用Cucumber + RSpec
- 6. 在生產環境中使用CoffeeScript
- 7. 遞歸代碼非循環遞歸
- 8. 開發和生產環境
- 9. 區分Websphere Commerce中的生產環境,臨時環境和測試環境
- 10. Twig_Error_Syntax:函數「代碼」不存在(適用於生產環境)
- 11. 僅在生產環境中運行代碼
- 12. 時間遞歸for循環代碼
- 13. 如何使用Git在開發和生產環境中分發Thrift生成的代碼?
- 14. 如何在生產環境中
- 15. MPL序列和遞歸代碼生成
- 16. 在開發和生產環境中自動代理AJAX請求
- 17. 在生產和開發環境中使用不同的陳述
- 18. 在開發和生產環境中使用OAuth
- 19. 在開發和生產環境中使用不同的Web.config
- 20. 未在生產環境或臨時環境中投放資產的導軌
- 21. Rails生產環境
- 22. PHP中的開發和生產環境
- 23. 生產環境中的Oracle JDK和OpenJDK
- 24. 生產環境中的node.js
- 25. Katta在生產環境
- 26. 使用haskell堆棧在生產環境和沙箱環境之間切換
- 27. 遞歸foreach()在循環時產生重複結果
- 28. Rails總是使用生產環境
- 29. 如何在開發環境和生產環境中定義不同的變量?
- 30. 如何僅在生產環境中使用載波上的霧
嗯......如果你在lisp或scheme中開發的話,如果你不能使用遞歸的話,你會非常容易被搞砸。 – bolov
如果Web開發人員從不在生產中看到C++代碼,那麼並不意味着不使用C++。 IT是一個非常重要的領域,你可以在任何範例中找到合法用途 – bolov
@bolov由於遞歸總是可以用迭代代替,所以任何包含「必須使用遞歸」(從遞歸調用函數的意義上來說)的句子都是根本錯誤的(對不起如此苛刻;-))。也就是說,許多遞歸數據結構可以用遞歸函數精美地處理,但事實上迭代通常更快,而且就stackoverflow而言風險更小。 –