引言:時間復雜度的求解,在此都是以實例進行講解,各位讀者可以從中慢慢理解;以下所有的案例都是以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 的下載地址:請點這裡