国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線(xiàn)課程
  • 觀看技術(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è)話(huà)題有點(diǎn)宏大因此特意開(kāi)了新號(hào),大家快去關(guān)注吧。 說(shuō)會(huì)遞歸轉(zhuǎn)為非遞歸這個(gè)話(huà)題,更理論一些的解釋是這樣的,不管是遞歸還是非遞歸,這兩者都是圖靈完備的,既然是圖靈完備,那么它們?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)單的,但如果是多叉的話(huà)問(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)有非遞歸版本的高,但你最好理解這句話(huà)到底在說(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à)可能會(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

    文章

    4417

    瀏覽量

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

    關(guān)注

    30

    文章

    4967

    瀏覽量

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

    關(guān)注

    0

    文章

    29

    瀏覽量

    9292

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

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

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    同軸光源 細(xì)小劃痕都可以被“看見(jiàn)”

    同軸光源可以對(duì)物體表面的微小不規(guī)則現(xiàn)象進(jìn)行成像。
    的頭像 發(fā)表于 01-09 17:40 ?186次閱讀
    同軸光源 細(xì)小劃痕<b class='flag-5'>都可以</b>被“看見(jiàn)”

    4步,&amp;quot;零代碼&amp;quot;搭出專(zhuān)屬環(huán)保監(jiān)測(cè)大屏

    這些需求。ZWS-IoT低代碼平臺(tái)提供了強(qiáng)大的拖拽式搭建功能,幫助用戶(hù)輕松創(chuàng)建個(gè)性化的智慧環(huán)保在線(xiàn)監(jiān)測(cè)應(yīng)用系統(tǒng)。從標(biāo)題、Logo到頁(yè)面內(nèi)的圖表,所有元素都可以通過(guò)組
    的頭像 發(fā)表于 12-26 11:34 ?372次閱讀
    4步,&amp;quot;零<b class='flag-5'>代碼</b>&amp;quot;搭出專(zhuān)屬環(huán)保監(jiān)測(cè)大屏

    無(wú)線(xiàn)充電寶是不是所有手機(jī)都可以

    無(wú)線(xiàn)充電寶需手機(jī)支持Qi標(biāo)準(zhǔn),不同品牌有不同適配范圍。
    的頭像 發(fā)表于 12-23 08:19 ?1206次閱讀
    無(wú)線(xiàn)充電寶是不是<b class='flag-5'>所有</b>手機(jī)<b class='flag-5'>都可以</b>充

    分析嵌入式軟件代碼的漏洞-代碼注入

    這些變量中有一些是指針,那么這個(gè)平臺(tái)甚至可以到達(dá)其他堆棧地址。 真正對(duì)攻擊者來(lái)說(shuō)有價(jià)值的目標(biāo)是讓攻擊者控制程序的執(zhí)行部分。如果一個(gè)局部變量是一個(gè)函數(shù)指針,則攻擊者可以通過(guò)該指針的后續(xù)調(diào)用來(lái)編寫(xiě)
    發(fā)表于 12-22 12:53

    深度休眠狀態(tài)下外部所有的IO都可以喚醒MCU嗎?

    深度休眠狀態(tài)下,外部所有的IO都可以喚醒MCU嗎?
    發(fā)表于 12-04 06:00

    請(qǐng)問(wèn)CW32L010是低功耗下2個(gè)串口都可以使用嗎?

    CW32L010是低功耗下2個(gè)串口都可以使用嗎?
    發(fā)表于 12-01 07:07

    HarmonyOS應(yīng)用代碼混淆技術(shù)方案

    代碼混淆技術(shù)可以增加代碼的復(fù)雜性和模糊性,從而提高攻擊者分析代碼的難度。
    的頭像 發(fā)表于 11-21 16:17 ?5603次閱讀
    HarmonyOS應(yīng)用<b class='flag-5'>代碼</b>混淆技術(shù)方案

    請(qǐng)問(wèn)CW32的pwm移相功能是只有PWM通道1有還是全部都可以配置?

    請(qǐng)問(wèn)CW32的pwm移相功能是只有PWM通道1有還是全部都可以配置?做三相移相時(shí)需不需要額外的處理?
    發(fā)表于 11-21 06:22

    代碼開(kāi)發(fā)平臺(tái)推薦:2025國(guó)內(nèi)低代碼開(kāi)發(fā)平臺(tái)排名TOP10

    代碼開(kāi)發(fā)平臺(tái)排行榜 在企業(yè)數(shù)字化轉(zhuǎn)型的浪潮中,低代碼開(kāi)發(fā)平臺(tái)正逐漸成為企業(yè)實(shí)現(xiàn)高效開(kāi)發(fā)和快速迭代的重要工具。隨著技術(shù)的不斷進(jìn)步和市場(chǎng)需求的持續(xù)增長(zhǎng),低代碼開(kāi)發(fā)平臺(tái)的市場(chǎng)競(jìng)爭(zhēng)也日益激烈。以下
    的頭像 發(fā)表于 10-28 10:22 ?732次閱讀

    飛凌嵌入式ElfBoard ELF 1板卡-Linux系統(tǒng)基礎(chǔ)入門(mén)-目錄相關(guān)shell命令

    參數(shù):ls[選項(xiàng)]目錄目錄缺省時(shí),默認(rèn)為當(dāng)前目錄;選項(xiàng)如下,選項(xiàng)可以組合使用。選項(xiàng)說(shuō)明空列出目錄下所有隱藏文件(包括目錄)-a列出目錄下所有文件,包括隱藏文件-l列出目錄下
    發(fā)表于 09-29 10:12

    京東比價(jià)項(xiàng)目開(kāi)發(fā)實(shí)錄:京東API接口(2025)

    這些年踩過(guò)的坑、寫(xiě)過(guò)的代碼,都成了寶貴的經(jīng)驗(yàn)。如果有遇到其他問(wèn)題都可以一起交流! ?
    的頭像 發(fā)表于 08-22 09:53 ?1026次閱讀
    京東比價(jià)項(xiàng)目開(kāi)發(fā)實(shí)錄:京東API接口(2025)

    NuMicro 中的每個(gè) ADC 通道都可以嗎?

    NuMicro 中的每個(gè) ADC 通道都可以嗎?具有相同模塊的系列微控制器同時(shí)采樣?
    發(fā)表于 08-22 06:29

    LABVIEW遞歸獲取列表顯示到樹(shù)形結(jié)構(gòu)

    我這個(gè)遞歸我邏輯沒(méi)問(wèn)題啊!我斷點(diǎn)調(diào)試看了,是因?yàn)橹厝隫I執(zhí)行沒(méi)有把樹(shù)形結(jié)構(gòu)里面節(jié)點(diǎn)傳入到下一個(gè)遞歸調(diào)用,進(jìn)入重調(diào)用的時(shí)候我看了樹(shù)形結(jié)構(gòu)里面節(jié)點(diǎn)是空的。第一次寫(xiě)入的節(jié)點(diǎn)并沒(méi)有傳入到下一次遞歸。 反正很
    發(fā)表于 08-07 17:59

    怎么把UI設(shè)計(jì)稿轉(zhuǎn)為代碼?在線(xiàn)UI設(shè)計(jì)工具一鍵生成!

    近日,華為開(kāi)發(fā)者大會(huì)2025(HDC)在東莞松山湖正式拉開(kāi)帷幕,這場(chǎng)備受矚目的盛會(huì)為全球科技行業(yè)帶來(lái)了諸多驚喜。其中,Pixso團(tuán)隊(duì)發(fā)布的全新設(shè)計(jì)稿一鍵轉(zhuǎn)代碼功能,成為了本次大會(huì)的一大亮點(diǎn)。這項(xiàng)創(chuàng)新
    的頭像 發(fā)表于 06-25 12:04 ?979次閱讀
    怎么把UI設(shè)計(jì)稿<b class='flag-5'>轉(zhuǎn)為</b><b class='flag-5'>代碼</b>?在線(xiàn)UI設(shè)計(jì)工具一鍵生成!

    OLED代碼分享

    OLED代碼
    發(fā)表于 04-29 17:04 ?1次下載