练习随笔

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}),直接带入即可。

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