引言:时间复杂度的解决,这里都用实例说明,读者可以从中慢慢理解; 以下所有案例都是用Python语言写的!
情形1 :求a的n次幂
代码如下。
defexp1(a,n ) :
if n==1:
return a
else:
returna*exp2(a,n-1 ) ) ) ) )。
分析: 1、问题规模为n; 2、规模为1时结束3、假设t(n )表示规模为n的问题所需的步骤数;
解决方案:
t(n )=3t(n-1 ) /注释: 3表示在一次循环中进行的操作数,一次是if的比较)==),两次是n-1在递归中的(-),三次是a*exp1(a,n-1 )
分解: t(n )=3) 3t ) n-2 ) ) ) )。
=333t(n-3 ) )。
.
=3*kt(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,进行了两次操作。
总结以上内容,上述程序时间复杂度为o(n )
Python详细介绍:单击此处
Python下载地址:单击此处