斐波那契(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;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具