引言:时间复杂度的求解,在此都是以实例进行讲解,各位读者能够从中慢慢理解;如下全部的案例都是以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)