歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> [Python]遞歸算法時間復雜度

[Python]遞歸算法時間復雜度

日期:2017/3/1 9:41:56   编辑:Linux編程

引言:時間復雜度的求解,在此都是以實例進行講解,各位讀者可以從中慢慢理解;以下所有的案例都是以Python語言編寫!

二叉樹先序中序非遞歸算法 http://www.linuxidc.com/Linux/2014-06/102935.htm

遞歸算法轉換為非遞歸算法 http://www.linuxidc.com/Linux/2014-06/102934.htm

案例一:求a的n次方

代碼如下:

def exp1(a,n):

if n == 1:

return a

else:

return a*exp2(a,n-1)

分析:1、問題的規模是n;2、當規模為1是結束;3、假設T(n)表示規模為n的問題所需的步驟數;

求解:

T(n)=3+T(n-1)//注釋:3表示一次循環中所做的操作數,一次是if的比較“==”,二次是遞歸中的n-1中的“-”,三次是a*exp1(a,n-1)中的“*”,規模每減少一次,就進行上述三次操作。

分解:T(n)=3+3+T(n-2)

=3+3+3+T(n-3)

......

=3*K+T(n-K)

當規模為1時返回結果,即n-K=1-》K=n-1,將K帶入T(n)

T(n)=3(n-1)+T(1)=3n-3+2=3n-1//注釋:T(1)時規模為1,進行了兩次操作。

綜上:上述程序時間復雜度為:O(n)

《Python核心編程 第二版》.(Wesley J. Chun ).[高清PDF中文版] http://www.linuxidc.com/Linux/2013-06/85425.htm

《Python開發技術詳解》.( 周偉,宗傑).[高清PDF掃描版+隨書視頻+代碼] http://www.linuxidc.com/Linux/2013-11/92693.htm

Python腳本獲取Linux系統信息 http://www.linuxidc.com/Linux/2013-08/88531.htm

在Ubuntu下用Python搭建桌面算法交易研究環境 http://www.linuxidc.com/Linux/2013-11/92534.htm

Python 的詳細介紹:請點這裡
Python 的下載地址:請點這裡

Copyright © Linux教程網 All Rights Reserved