码迷,mamicode.com
首页 > 其他好文 > 详细

递归算法时间复杂度

时间:2014-07-23 00:22:08      阅读:170      评论:0      收藏:0      [点我收藏+]

标签:时间复杂度

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

本文出自 “天道酬勤” 博客,请务必保留此出处http://737110312.blog.51cto.com/2927801/1441502

递归算法时间复杂度

标签:时间复杂度

原文地址:http://737110312.blog.51cto.com/2927801/1441502

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!