设为首页 加入收藏

TOP

[Python]递归算法时间复杂度
2014-11-23 22:06:57 来源: 作者: 【 】 浏览:16
Tags:Python 算法 时间 复杂度

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


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇HTML5 地理位置定位(HTML5 Geolo.. 下一篇百度地图坐标转换

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: