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

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

所有遞歸代碼都可以轉(zhuǎn)為非遞歸代碼

算法與數(shù)據(jù)結(jié)構(gòu) ? 來(lái)源:碼農(nóng)的荒島求生 ? 作者:碼農(nóng)的荒島求生 ? 2022-04-19 15:02 ? 次閱讀

先說(shuō)答案,這是肯定的,所有遞歸代碼都可以轉(zhuǎn)為非遞歸代碼。

之所以所有的遞歸都能轉(zhuǎn)為迭代算法是因?yàn)檫f歸借助函數(shù)調(diào)用,函數(shù)調(diào)用本身就是基于調(diào)用棧這種結(jié)構(gòu)實(shí)現(xiàn)的,只不過(guò)這一切都是自動(dòng)完成的,我們當(dāng)然也可以用代碼手動(dòng)模擬出來(lái)。

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

我們知道將遞歸調(diào)用全部展開(kāi)后其實(shí)會(huì)形成一棵樹(shù),把遞歸轉(zhuǎn)為非遞歸無(wú)非就是在遍歷這棵樹(shù),那么遍歷樹(shù)就有很多技術(shù)了,基于棧的深度優(yōu)先遍歷Depth-first traversal,或者基于隊(duì)列的廣度優(yōu)先遍歷breadth-first traversal都是可以的:

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

哦對(duì)了,說(shuō)到算法,大家趕緊去關(guān)注小風(fēng)哥的算法號(hào),這個(gè)公眾號(hào)也是我親手寫(xiě)的,只不過(guò)數(shù)據(jù)結(jié)構(gòu)與算法這個(gè)話題有點(diǎn)宏大因此特意開(kāi)了新號(hào),大家快去關(guān)注吧。 說(shuō)會(huì)遞歸轉(zhuǎn)為非遞歸這個(gè)話題,更理論一些的解釋是這樣的,不管是遞歸還是非遞歸,這兩者都是圖靈完備的,既然是圖靈完備,那么它們?cè)诒磉_(dá)能力上就是等價(jià)的,不存在誰(shuí)不能轉(zhuǎn)為誰(shuí)的問(wèn)題。關(guān)于圖靈完備參考這篇《計(jì)算機(jī)科學(xué)中那些有趣的事實(shí)》。 只不過(guò)這存在一個(gè)難易程度的問(wèn)題。 大家都知道尾遞歸最容易轉(zhuǎn)為非遞歸的迭代形式,本質(zhì)上是這棵樹(shù)不是多叉的而是單叉的,單叉的不就退化成鏈表了嘛,遍歷鏈表當(dāng)然是簡(jiǎn)單的,但如果是多叉的話問(wèn)題就沒(méi)那么簡(jiǎn)單了,這里最有趣的是不存在一種模板可以讓我們直接用套路的形式把遞歸轉(zhuǎn)為非遞歸,因此這里存在一個(gè)問(wèn)題:為什么你要把遞歸轉(zhuǎn)為非遞歸呢?因?yàn)樽罱K你會(huì)發(fā)現(xiàn)將遞歸轉(zhuǎn)為非遞歸無(wú)非就是你自己接手了編譯器本來(lái)已經(jīng)替你完成的工作,你會(huì)發(fā)現(xiàn)自己在手動(dòng)模擬函數(shù)調(diào)用。

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

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

審核編輯 :李倩

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 函數(shù)
    +關(guān)注

    關(guān)注

    3

    文章

    4345

    瀏覽量

    62877
  • 代碼
    +關(guān)注

    關(guān)注

    30

    文章

    4823

    瀏覽量

    68900
  • 遞歸
    +關(guān)注

    關(guān)注

    0

    文章

    29

    瀏覽量

    9047

原文標(biāo)題:遞歸代碼都可以轉(zhuǎn)為非遞歸嗎 ?

文章出處:【微信號(hào):TheAlgorithm,微信公眾號(hào):算法與數(shù)據(jù)結(jié)構(gòu)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

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

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

    hex可以轉(zhuǎn)成源代碼

    Hex文件可以轉(zhuǎn)換成源代碼的近似形式,但無(wú)法直接還原為原始的、完全相同的源代碼 。這是因?yàn)镠ex文件是二進(jìn)制文件,包含了程序編譯后的機(jī)器碼,這些機(jī)器碼與原始的源代碼在結(jié)構(gòu)和表達(dá)上存在顯
    的頭像 發(fā)表于 09-02 10:41 ?1175次閱讀

    Python遞歸的經(jīng)典案例

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

    人員定位系統(tǒng)都可以用于哪些行業(yè)?

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

    遞歸神經(jīng)網(wǎng)絡(luò)和循環(huán)神經(jīng)網(wǎng)絡(luò)的模型結(jié)構(gòu)

    遞歸神經(jīng)網(wǎng)絡(luò)是一種旨在處理分層結(jié)構(gòu)的神經(jīng)網(wǎng)絡(luò),使其特別適合涉及樹(shù)狀或嵌套數(shù)據(jù)的任務(wù)。這些網(wǎng)絡(luò)明確地模擬了層次結(jié)構(gòu)中的關(guān)系和依賴關(guān)系,例如語(yǔ)言中的句法結(jié)構(gòu)或圖像中的層次表示。它使用遞歸操作來(lái)分層處理信息,有效地捕獲上下文信息。
    的頭像 發(fā)表于 07-10 17:21 ?740次閱讀
    <b class='flag-5'>遞歸</b>神經(jīng)網(wǎng)絡(luò)和循環(huán)神經(jīng)網(wǎng)絡(luò)的模型結(jié)構(gòu)

    遞歸神經(jīng)網(wǎng)絡(luò)的實(shí)現(xiàn)方法

    遞歸神經(jīng)網(wǎng)絡(luò)(Recursive Neural Network,簡(jiǎn)稱RNN)是一種特殊類型的神經(jīng)網(wǎng)絡(luò),其特點(diǎn)在于能夠處理具有層次或樹(shù)狀結(jié)構(gòu)的數(shù)據(jù),并通過(guò)遞歸的方式對(duì)這些數(shù)據(jù)進(jìn)行建模。與循環(huán)神經(jīng)網(wǎng)絡(luò)
    的頭像 發(fā)表于 07-10 17:02 ?371次閱讀

    rnn是遞歸神經(jīng)網(wǎng)絡(luò)還是循環(huán)神經(jīng)網(wǎng)絡(luò)

    RNN(Recurrent Neural Network)是循環(huán)神經(jīng)網(wǎng)絡(luò),而非遞歸神經(jīng)網(wǎng)絡(luò)。循環(huán)神經(jīng)網(wǎng)絡(luò)是一種具有時(shí)間序列特性的神經(jīng)網(wǎng)絡(luò),能夠處理序列數(shù)據(jù),具有記憶功能。以下是關(guān)于循環(huán)神經(jīng)網(wǎng)絡(luò)的介紹
    的頭像 發(fā)表于 07-05 09:52 ?630次閱讀

    遞歸神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)形式主要分為

    遞歸神經(jīng)網(wǎng)絡(luò)(Recurrent Neural Networks,簡(jiǎn)稱RNN)是一種具有時(shí)間序列處理能力的神經(jīng)網(wǎng)絡(luò),其結(jié)構(gòu)形式多樣,可以根據(jù)不同的需求進(jìn)行選擇和設(shè)計(jì)。本文將介紹遞歸神經(jīng)網(wǎng)絡(luò)的幾種主要
    的頭像 發(fā)表于 07-05 09:32 ?603次閱讀

    遞歸神經(jīng)網(wǎng)絡(luò)與循環(huán)神經(jīng)網(wǎng)絡(luò)一樣嗎

    遞歸神經(jīng)網(wǎng)絡(luò)(Recursive Neural Network,RvNN)和循環(huán)神經(jīng)網(wǎng)絡(luò)(Recurrent Neural Network,RNN)是兩種不同類型的神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu),它們?cè)谔幚硇蛄袛?shù)據(jù)
    的頭像 發(fā)表于 07-05 09:28 ?962次閱讀

    遞歸神經(jīng)網(wǎng)絡(luò)主要應(yīng)用于哪種類型數(shù)據(jù)

    處理(NLP) 自然語(yǔ)言處理是遞歸神經(jīng)網(wǎng)絡(luò)最重要的應(yīng)用領(lǐng)域之一。在NLP中,遞歸神經(jīng)網(wǎng)絡(luò)可以用于以下任務(wù): 1.1 語(yǔ)言模型(Language Modeling) 語(yǔ)言模型是預(yù)測(cè)給定詞序列中下一個(gè)詞的概率分布。
    的頭像 發(fā)表于 07-04 14:58 ?876次閱讀

    遞歸神經(jīng)網(wǎng)絡(luò)是循環(huán)神經(jīng)網(wǎng)絡(luò)嗎

    遞歸神經(jīng)網(wǎng)絡(luò)(Recurrent Neural Network,簡(jiǎn)稱RNN)和循環(huán)神經(jīng)網(wǎng)絡(luò)(Recurrent Neural Network,簡(jiǎn)稱RNN)實(shí)際上是同一個(gè)概念,只是不同的翻譯方式
    的頭像 發(fā)表于 07-04 14:54 ?855次閱讀

    遞歸神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu)、特點(diǎn)、優(yōu)缺點(diǎn)及適用場(chǎng)景

    遞歸神經(jīng)網(wǎng)絡(luò)(Recurrent Neural Networks,簡(jiǎn)稱RNN)是一種具有循環(huán)結(jié)構(gòu)的神經(jīng)網(wǎng)絡(luò),其核心特點(diǎn)是能夠處理序列數(shù)據(jù),并對(duì)序列中的信息進(jìn)行記憶和傳遞。RNN在自然語(yǔ)言處理、語(yǔ)音
    的頭像 發(fā)表于 07-04 14:52 ?1618次閱讀

    循環(huán)神經(jīng)網(wǎng)絡(luò)和遞歸神經(jīng)網(wǎng)絡(luò)的區(qū)別

    循環(huán)神經(jīng)網(wǎng)絡(luò)(Recurrent Neural Network,簡(jiǎn)稱RNN)和遞歸神經(jīng)網(wǎng)絡(luò)(Recursive Neural Network,簡(jiǎn)稱RvNN)是深度學(xué)習(xí)中兩種重要的神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)。它們?cè)?/div>
    的頭像 發(fā)表于 07-04 14:19 ?979次閱讀

    關(guān)于C語(yǔ)言中的遞歸

    遞歸指的是在函數(shù)的定義中使用函數(shù)自身的方法。
    發(fā)表于 02-26 10:34 ?424次閱讀
    關(guān)于C語(yǔ)言中的<b class='flag-5'>遞歸</b>

    榮小菜補(bǔ)鈣記第61期_LabVIEW之遞歸文件及文件夾

    靈活使用。 3. 遍歷全部層級(jí)文件及文件夾_Demo 利用“羅列文件夾”函數(shù),通過(guò)編寫(xiě)一定的邏輯,可以實(shí)現(xiàn)返回全部層級(jí)的文件及文件夾。代碼如下。基本邏輯是遍歷每一層級(jí)的文件夾,若仍存在文件夾,則繼續(xù)
    發(fā)表于 02-16 21:36
    主站蜘蛛池模板: 2021全国精品卡一卡二 | 最近更新2019中文字幕免费 | 久久只有这里有精品4 | 欧美精品一区二区三区视频 | 99re精品视频在线播放视频 | 国产中文字幕乱码免费 | 国产手机在线亚洲精品观看 | 2012中文字幕手机在线 | 亚洲伊人精品综合在合线 | 亚洲91av| 国产精品久久久久久久久爆乳 | 欧美亚洲日韩在线在线影院 | 迅雷成人论坛 | 国产一区内射最近更新 | 亚洲精品午睡沙发系列 | 亚洲爆乳无码精品AAA片蜜桃 | 99视频久九热精品 | 国产不卡视频在线 | silk118中文字幕无删减 | 久久精品美女 | 亚洲综合无码一区二区 | 国产午夜精品理论片 | 高h辣h双处全是肉一对一 | 欧美午夜福利主线路 | 青春禁区动漫免费观看 | 91精品福利一区二区 | 2021自产拍在线观看视频 | 欧美激情精品久久久久久不卡 | 色迷迷导航 | 国产网红主播精品福利大秀专区 | 日韩欧美一区二区三区免费看 | 把极品白丝班长啪到腿软 | 亚洲色欲国产免费视频 | 后入到高潮免费观看 | 99re精品视频在线播放视频 | 精品国产在线亚洲欧美 | 国产原创剧情麻豆在线 | 国产99视频精品一区 | 欧美亚洲国产免费高清视频 | 日韩内射美女人妻一区二区三区 | 亚洲AV无码一区二区三区牛牛 |