第一章总结——斐波那契数列算法

斐波那契数列算法

核心: F(0)=0,F(1)=1, F(n)=F(n-1)+F(n-2) (n>=2)

//递归算法
//递归实现
long long fib(int n){
    if(n == 0) return 0;
    if(n == 1) return 1;
    return fib(n-1) + fib(n-2);
}

递归算法缺点:当n很大时,计算会十分冗杂。例如计算fib(5)=fib(4)+fib(3),而fib(4)和fib(3)又是一个独立的计算过程,效率十分低。

算法优化(用循环代替递归)

//优化1
long long fib(int n){
    long long f[1000];
    f[0]=0;f[1]=1;
    for(int i=2;i<=n;i++){
        f[i]=f[i-1]+f[i-2];
    }
    return f[n];
}
//优化2
long long fib(int n){
    long long f[3]={0,1,0};
    for(int i=2;i<=n;i++){
    f[2]=f[0]+f[1];
    f[0]=f[1];
    f[1]=f[2];
    }
    return f[2];
}

斐波那契数列的最优算法(O(logN)):https://blog.51cto.com/helloleex/1769253

posted @ 2021-09-17 14:31  Varié  阅读(231)  评论(0编辑  收藏  举报