日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

分析递归函数的时间复杂度

發(fā)布時(shí)間:2024/8/26 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 分析递归函数的时间复杂度 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

遞歸算法的時(shí)間復(fù)雜度表達(dá)式:

O(T) = R * O(s)

O(T)表示時(shí)間復(fù)雜度

R表示遞歸調(diào)用的次數(shù)

O(s)每次遞歸調(diào)用計(jì)算的時(shí)間復(fù)雜度

想想斐波那契函數(shù),它的遞歸關(guān)系是f(n) = f(n-1) + f(n-2);乍一看,我們會(huì)發(fā)現(xiàn),在斐波那契函數(shù)執(zhí)行期間來(lái)計(jì)算遞歸調(diào)用的次數(shù)似乎并不那么的容易。

解釋:這種情況下,我們最好是可以借助執(zhí)行樹,它是一顆被用來(lái)表示遞歸函數(shù)執(zhí)行流程的數(shù)。樹中的每一個(gè)節(jié)點(diǎn)代表遞歸函數(shù)的一次調(diào)用。所以,樹中節(jié)點(diǎn)的總數(shù)與執(zhí)行期間遞歸調(diào)用的數(shù)量相對(duì)應(yīng)。

遞歸函數(shù)的執(zhí)行樹將形成一個(gè)n叉樹,這個(gè)n就是遞歸在遞歸關(guān)系中出現(xiàn)的 次數(shù)。 還拿斐波那契函數(shù)來(lái)說事,那它會(huì)形成一個(gè)二叉樹。具體可參考下圖。

在深度為n的完全二叉樹中,所有節(jié)點(diǎn)的數(shù)量可以達(dá)到2n-1。那么在遞歸函數(shù)f(n)的遞歸次數(shù)的上界也就是2n-1。所以,我們可以估算出f(n)的時(shí)間復(fù)雜度就是O(2n)

備忘錄

備忘錄技術(shù)是用來(lái)優(yōu)化遞歸算法時(shí)間復(fù)雜度的技術(shù)。通過緩存和重用中間結(jié)果的方式,備忘錄可以極大地減少遞歸調(diào)用的次數(shù),也就是減少執(zhí)行樹中分枝的數(shù)量。所以,當(dāng)我們使用備忘錄來(lái)分析遞歸算法的時(shí)間復(fù)雜度時(shí)候應(yīng)該把這減少的部分考慮到。

再把斐波那契函數(shù)拎出來(lái)說事。通過備忘錄技術(shù),我們會(huì)對(duì)每一個(gè)下標(biāo)n進(jìn)行斐波那契數(shù)進(jìn)行保存操作。我們也能夠確信的是每一個(gè)斐波那契數(shù)的計(jì)算也僅僅出現(xiàn)一次。眾所周知的是根據(jù)遞歸關(guān)系,一個(gè)斐波那契數(shù)f(n)依賴于所有n-1在前的斐波那契數(shù)。結(jié)果就是,計(jì)算f(n)遞歸將調(diào)用n-1次,以計(jì)算它所依賴的所有先前的數(shù)。

現(xiàn)在我們就可以利用文章開頭列出的公式來(lái)計(jì)算備忘錄技術(shù)應(yīng)用后的時(shí)間復(fù)雜度:O(1)n=O(n)。

結(jié)論

備忘錄不僅優(yōu)化算法的時(shí)間復(fù)雜度,而且還可以簡(jiǎn)化時(shí)間復(fù)雜度的計(jì)算。

希望能給大家?guī)?lái)一定的幫助,歡迎一鍵三連,謝謝。?

總結(jié)

以上是生活随笔為你收集整理的分析递归函数的时间复杂度的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。