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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

递归时间/空间复杂度的分析(斐波那契为例)

發布時間:2024/10/14 编程问答 49 豆豆
生活随笔 收集整理的這篇文章主要介紹了 递归时间/空间复杂度的分析(斐波那契为例) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

寫在前面:博主是一位普普通通的19屆雙非軟工在讀生,平時最大的愛好就是聽聽歌,逛逛B站。博主很喜歡的一句話花開堪折直須折,莫待無花空折枝:博主的理解是頭一次為人,就應該做自己想做的事,做自己不后悔的事,做自己以后不會留有遺憾的事,做自己覺得有意義的事,不浪費這大好的青春年華。博主寫博客目的是記錄所學到的知識并方便自己復習,在記錄知識的同時獲得部分瀏覽量,得到更多人的認可,滿足小小的成就感,同時在寫博客的途中結交更多志同道合的朋友,讓自己在技術的路上并不孤單。

目錄:
1.斐波那契遞歸代碼實現
2.斐波那契的時間復雜度的詳細分析
3.斐波那契的空間復雜度詳細分析

1.斐波那契遞歸代碼實現

int Fibonacci(int n) {if(n==1||n==2)return 1;elsereturn Fibonacci(n-1)+Fibonacci(n-2); }

2.斐波那契的時間復雜度的詳細分析

我們來看一個當n=5的時候遞歸代碼如何執行的(沒完全展開):

二叉樹的高度是 n - 1,由我們的基礎知識可以知道,一個高度為k的二叉樹最多可以由 2k- 1個葉子節點,也就是遞歸過程函數調用的次數,所以時間復雜度是:

O(2n)

當然這只是針對斐波那契數列,漢諾塔等等,如果是其他的遞歸可能又會不同。當然當代碼的時間復雜度為指數級的時候,隨著參數的變大,程序的效率是非常低下的,而且當n值過大,容易產生棧溢出的可能,明顯這樣的遞歸方法是低效的

3.斐波那契的空間復雜度詳細分析

還拿n==5來說

①-③:調用Fib(5),首先需調用Fib(4),Fib(4)要先調用Fib(3),逐步調用直至返回Fib(2)的值1,Fib執行結束,所創建空間銷毀。此時Fib(5)、Fib(4)、Fib(3)均未調用結束,程序共占用4個函數棧幀空間。

④-⑨:Fib(2)執行結束,接下來調用Fib(1),創建一個函數棧幀空間,調用結束返回1后,該空間銷毀,此時可得到Fib(3)=2,通過第⑦步返回Fib(3)的值,第⑧步同樣創建空間再次調用Fib(2),調用結束銷毀空間,此時可得到Fib(4)=3,通過第⑨步返回Fib(4)的值,此過程最大占用4個函數棧幀空間。

⑩-···:最后和上面一樣,調用Fib(3),將返回值傳給Fib(5)的模塊,最終得到Fib(5)=5。

整個程序執行過程中,最多占用4個函數棧幀空間的大小,4就是整個二叉樹的深度,而其樹的深度有是n-1

所以:

斐波那契的空間復雜度就是樹的深度 S(n)

總結

以上是生活随笔為你收集整理的递归时间/空间复杂度的分析(斐波那契为例)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。