引言:時間複雜度的求解,在此都是以實例進行講解,各位讀者能夠從中慢慢理解;如下全部的案例都是以Python語言編寫!ide
案例一:求a的n次方遞歸
代碼以下: it
def exp1(a,n):class
if n == 1:循環
return a程序
else: 註釋
return a*exp2(a,n-1)語言
分析:一、問題的規模是n;二、當規模爲1是結束;三、假設T(n)表示規模爲n的問題所需的步驟數;di
求解:時間
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)