遞歸算法時間複雜度分析
4.1 階乘n!的遞歸算法的時間複雜度
時間複雜度是由語句頻度分析得來. 遞歸算法中重複執行的語句主要是調用.
所以遞歸算法的時間複雜度分析主要是分析遞歸算法中遞歸函數調用的次數,並給出其調用次數的函數f(n).
如例1中,當n=5時fan(5)的調用情況如圖1所示:
從圖1中可以總結出fan(n)函數被重複調用了n+1次. 由此可以寫出f(n)=n+1. 其時間複雜度T(n)=O(n).
fan(0)
1
fan(1)
2
fan(2)
3
fan(3)
4
fan(4)
4.2
Fibonacci數列的時間複雜度
用4.1所使用的方法求解簡單遞歸算法的時間複雜度的方法,對於Fibonacci數列來說就不適用.
在Fibonacci數列的公式中我們發現:計算第n項的數列值,就要先計算第n-1與第n-2項的值.
這就很難計算出要遞歸調用的次數,所以就不能單純地用上述方法來求解時間複雜度.
對於Fibonacci數列可以採用母函數[3]的方法來計算Fibonacci數列的時間複雜度:
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.