遞歸算法時間複雜度

引言:時間複雜度的求解,在此都是以實例進行講解,各位讀者能夠從中慢慢理解;如下全部的案例都是以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)         

相關文章
相關標籤/搜索