色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

所有遞歸代碼都可以轉為非遞歸代碼

算法與數據結構 ? 來源:碼農的荒島求生 ? 作者:碼農的荒島求生 ? 2022-04-19 15:02 ? 次閱讀

先說答案,這是肯定的,所有遞歸代碼都可以轉為非遞歸代碼。

之所以所有的遞歸都能轉為迭代算法是因為遞歸借助函數調用,函數調用本身就是基于調用棧這種結構實現的,只不過這一切都是自動完成的,我們當然也可以用代碼手動模擬出來。

60f64680-bf93-11ec-9e50-dac502259ad0.png

我們知道將遞歸調用全部展開后其實會形成一棵樹,把遞歸轉為非遞歸無非就是在遍歷這棵樹,那么遍歷樹就有很多技術了,基于棧的深度優先遍歷Depth-first traversal,或者基于隊列的廣度優先遍歷breadth-first traversal都是可以的:

610cf696-bf93-11ec-9e50-dac502259ad0.png

哦對了,說到算法,大家趕緊去關注小風哥的算法號,這個公眾號也是我親手寫的,只不過數據結構與算法這個話題有點宏大因此特意開了新號,大家快去關注吧。 說會遞歸轉為非遞歸這個話題,更理論一些的解釋是這樣的,不管是遞歸還是非遞歸,這兩者都是圖靈完備的,既然是圖靈完備,那么它們在表達能力上就是等價的,不存在誰不能轉為誰的問題。關于圖靈完備參考這篇《計算機科學中那些有趣的事實》。 只不過這存在一個難易程度的問題。 大家都知道尾遞歸最容易轉為非遞歸的迭代形式,本質上是這棵樹不是多叉的而是單叉的,單叉的不就退化成鏈表了嘛,遍歷鏈表當然是簡單的,但如果是多叉的話問題就沒那么簡單了,這里最有趣的是不存在一種模板可以讓我們直接用套路的形式把遞歸轉為非遞歸,因此這里存在一個問題:為什么你要把遞歸轉為非遞歸呢?因為最終你會發現將遞歸轉為非遞歸無非就是你自己接手了編譯器本來已經替你完成的工作,你會發現自己在手動模擬函數調用。

61368826-bf93-11ec-9e50-dac502259ad0.png

遞歸的優勢很明顯:代碼簡潔,容易理解和維護,其為人詬病的地方在于執行效率“可能”沒有非遞歸版本的高,但你最好理解這句話到底在說什么,到底哪里效率就不高了? 我們知道函數調用本身并不是免費的,函數調用也是有代價的,這里的代價就在于維護函數調用以及函數返回需要額外執行一些指令,關于這部分的內容可以參考《函數調用時底層發生了什么?》,同時棧區空間有限,因此如果你的遞歸調用層級太多的話可能會導致棧溢出,撐爆你的運行時環境以及可能存在重復計算問題(可以利用memory table解決),除此之外除非你有絕對令人信服的理由,否則你不應該試圖將遞歸轉為非遞歸。

審核編輯 :李倩

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 函數
    +關注

    關注

    3

    文章

    4353

    瀏覽量

    63294
  • 代碼
    +關注

    關注

    30

    文章

    4857

    瀏覽量

    69527
  • 遞歸
    +關注

    關注

    0

    文章

    29

    瀏覽量

    9097

原文標題:遞歸代碼都可以轉為非遞歸嗎 ?

文章出處:【微信號:TheAlgorithm,微信公眾號:算法與數據結構】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    java反編譯的代碼可以修改么

    Java反編譯是一種將編譯后的Java字節碼(.class文件)轉換回源代碼的過程。反編譯后的代碼可以進行修改,但是需要注意,反編譯代碼的質量和可讀性可能會受到原始編譯
    的頭像 發表于 09-02 11:00 ?932次閱讀

    hex可以轉成源代碼

    Hex文件可以轉換成源代碼的近似形式,但無法直接還原為原始的、完全相同的源代碼 。這是因為Hex文件是二進制文件,包含了程序編譯后的機器碼,這些機器碼與原始的源代碼在結構和表達上存在顯
    的頭像 發表于 09-02 10:41 ?1374次閱讀

    Python遞歸的經典案例

    當我們碰到諸如需要求階乘或斐波那契數列的問題時,使用普通的循環往往比較麻煩,但如果我們使用遞歸時,會簡單許多,起到事半功倍的效果。這篇文章主要和大家分享一些和遞歸有關的經典案例,結合一些資料談一下個人的理解,也借此加深自己對遞歸
    的頭像 發表于 08-05 15:57 ?437次閱讀

    人員定位系統都可以用于哪些行業?

    。 一、人員定位系統都可以用于哪些行業? 這套系統可以服務的行業非常多,尤其是崗位具有一定危險性的,那么定位系統可以說發揮的作用十分明顯,比如化工廠、消防員、礦井、戶外勘探等,而為了便于人員管理的場景也
    的頭像 發表于 07-15 11:32 ?486次閱讀
    人員定位系統<b class='flag-5'>都可以</b>用于哪些行業?

    遞歸神經網絡和循環神經網絡的模型結構

    遞歸神經網絡是一種旨在處理分層結構的神經網絡,使其特別適合涉及樹狀或嵌套數據的任務。這些網絡明確地模擬了層次結構中的關系和依賴關系,例如語言中的句法結構或圖像中的層次表示。它使用遞歸操作來分層處理信息,有效地捕獲上下文信息。
    的頭像 發表于 07-10 17:21 ?885次閱讀
    <b class='flag-5'>遞歸</b>神經網絡和循環神經網絡的模型結構

    遞歸神經網絡的實現方法

    遞歸神經網絡(Recursive Neural Network,簡稱RNN)是一種特殊類型的神經網絡,其特點在于能夠處理具有層次或樹狀結構的數據,并通過遞歸的方式對這些數據進行建模。與循環神經網絡
    的頭像 發表于 07-10 17:02 ?483次閱讀

    rnn是遞歸神經網絡還是循環神經網絡

    RNN(Recurrent Neural Network)是循環神經網絡,而非遞歸神經網絡。循環神經網絡是一種具有時間序列特性的神經網絡,能夠處理序列數據,具有記憶功能。以下是關于循環神經網絡的介紹
    的頭像 發表于 07-05 09:52 ?739次閱讀

    遞歸神經網絡結構形式主要分為

    遞歸神經網絡(Recurrent Neural Networks,簡稱RNN)是一種具有時間序列處理能力的神經網絡,其結構形式多樣,可以根據不同的需求進行選擇和設計。本文將介紹遞歸神經網絡的幾種主要
    的頭像 發表于 07-05 09:32 ?686次閱讀

    簡述遞歸神經網絡的計算過程

    遞歸神經網絡(Recurrent Neural Network,簡稱RNN)是一種具有循環結構的神經網絡,其核心特點是能夠處理序列數據,并且能夠記憶之前處理過的信息。RNN在自然語言處理、語音識別
    的頭像 發表于 07-05 09:30 ?570次閱讀

    遞歸神經網絡與循環神經網絡一樣嗎

    遞歸神經網絡(Recursive Neural Network,RvNN)和循環神經網絡(Recurrent Neural Network,RNN)是兩種不同類型的神經網絡結構,它們在處理序列數據
    的頭像 發表于 07-05 09:28 ?1140次閱讀

    遞歸神經網絡主要應用于哪種類型數據

    處理(NLP) 自然語言處理是遞歸神經網絡最重要的應用領域之一。在NLP中,遞歸神經網絡可以用于以下任務: 1.1 語言模型(Language Modeling) 語言模型是預測給定詞序列中下一個詞的概率分布。
    的頭像 發表于 07-04 14:58 ?978次閱讀

    遞歸神經網絡是循環神經網絡嗎

    遞歸神經網絡(Recurrent Neural Network,簡稱RNN)和循環神經網絡(Recurrent Neural Network,簡稱RNN)實際上是同一個概念,只是不同的翻譯方式
    的頭像 發表于 07-04 14:54 ?1035次閱讀

    遞歸神經網絡的結構、特點、優缺點及適用場景

    遞歸神經網絡(Recurrent Neural Networks,簡稱RNN)是一種具有循環結構的神經網絡,其核心特點是能夠處理序列數據,并對序列中的信息進行記憶和傳遞。RNN在自然語言處理、語音
    的頭像 發表于 07-04 14:52 ?1883次閱讀

    循環神經網絡和遞歸神經網絡的區別

    循環神經網絡(Recurrent Neural Network,簡稱RNN)和遞歸神經網絡(Recursive Neural Network,簡稱RvNN)是深度學習中兩種重要的神經網絡結構。它們在
    的頭像 發表于 07-04 14:19 ?1121次閱讀

    ESP32模組的EXT0和EXT1喚醒源都可以選擇哪些引腳?

    模組的 EXT0 和 EXT1 喚醒源都可以選擇哪些引腳?在技術文檔的哪些部分有相關說明?
    發表于 06-13 06:04
    主站蜘蛛池模板: 哇嘎在线精品视频在线观看 | 宿舍BL 纯肉各种PLAY H | 日本熟妇乱妇熟色A片蜜桃亚洲 | 国产精品内射久久久久欢欢 | 欧美牲交视频免费观看K8经典 | 亚洲刺激视频 | 俄罗斯14一18处交 | 久久久久久91香蕉国产 | 久久精品国产视频澳门 | 色偷偷网址 | 精品精品国产自在现拍 | 成人免费毛片观看 | 麻豆国产原创中文AV网站 | 男生jj插入女生jj | 国产高清在线观看视频 | 色戒在线完整观看在线播放版 | 久久大香萑太香蕉av | H揉捏娇喘乳叫床NP调教视频 | 精品一成人岛国片在线观看 | 亚洲国产货青视觉盛宴 | 被强J高H纯肉公交车啊 | 欧美精品一区二区在线电影 | 伊人久久综合成人亚洲 | 国产36d在线观看 | 午夜看片福利在线观看 | 国产亚洲精品久久久久久线投注 | 成人免费视频一区 | 哒哒哒高清视频在线观看 | 东北女人奶大毛多水多 | 日日摸夜添夜夜夜添高潮 | 琪琪SEE色原网色原网站18 | 免费国产午夜理论不卡 | 色丁香婷婷综合缴情综 | 人妻插B视频一区二区三区 人妻 中文无码 中出 | 伦理片飘花手机在线 | 99香蕉精品视频在线观看 | 精品国产原创在线观看视频 | 加勒比一本之道高清视频在线观看 | 久久理论片 | 成人手机在线观看 | 国产精品人成在线播放新网站 |