斐波那契(fibonacci)数列

斐波那契(fibonacci)数列

upd:2024-7-12 修复2处代码bug

递归法

O ( 2 n ) O(2^n) O(2n)

int fib(int x){
    if(x==0) return 0;
    else if(x==1||x==2) return 1;
    else return fib(x-1)+fib(x-2);
}

记忆化, O ( n ) O(n) O(n)

extern long long dp[MAX];
long long fib(int n){
    if(n==1||n==2) dp[n]=1;
    if(!dp[n]) dp[n]=fib(n-1)+fib(n-2);
    return dp[n];
}

迭代法

  • dp数组法
extern long long dp[MAX];
long long fib(int n){
    for(int i=1;i<=n;i++)
        if(i==1||i==2) dp[i]=1;
    	else if(!dp[i]) dp[i]=dp[i-1]+dp[i-2];
    return dp[n];
}
  • 滚动变量法
long long fib(int n){
    if(n==1||n==2) return 1;
    long long a=1,b=1,ans;
    while(n-2){
        ans=a+b;
        a=b;
        b=ans;
        n--;
    }
    return ans;
}

long long fib(int n) {
    if (n==1||n==2) return 1;
    long long a=1,b=1,ans;
    for(long long i=3;i<=n;i++){
        ans=a+b;
        a=b;
        b=ans;
    }
    return ans;
}
posted @   椰萝Yerosius  阅读(3)  评论(0编辑  收藏  举报  
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具
点击右上角即可分享
微信分享提示