遞歸算法時間複雜度

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章