引言:時間複雜度的求解,在此都是以實例進行講解,各位讀者可以從中慢慢理解;以下所有的案例都是以Python語言編寫!
案例一:求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)