練習隨筆

1.關於斐波那契數列的算法

通常所寫的算法都是遞歸算法,時間複雜度隨着n的增大而指數級增加。考慮以下兩種優化方式:
一、遞歸轉化成循環

int fun(int n){	
    if (n == 0) return 0;
    if (n == 1 || n == 2) return 1;
    int f1 = 1, f2 = 1, fn;
    for (int i = 3; i <= n; i++) {
        fn = f1 + f2;
        f1 = f2;
        f2 = fn;
    }
    return fn;
}

二、記憶遞歸通項表達式

f_n =\frac{1}{\displaystyle \sqrt{5}}*((\frac{1+\sqrt{5}}{2})^{n}-(\frac{1-\sqrt{5}}{2})^{n}),直接帶入即可。

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