斐波那契数列(记忆化搜索

题目
1 1 2 3 5 8 13 21 34 55
第n项等于(n-1)+(n-2)。

代码

#include<bits/stdc++.h>
using namespace std;
int fib[1000005];
int dfs(int n){
 if(fib[n])
  return fib[n];
 if(n==1||n==2)
  fib[n]=1;
 else
  fib[n]=(dfs(n-1)+dfs(n-2));
 return fib[n];
}
int main(){
 int n;
 while(cin>>n){
  dfs(n);
  cout<<fib[n]<<endl;
 }
 return 0;
} 

思路
利用fib数组保存已经计算过的数据,在需要的时候直接取出,不需要再重复浪费时间再次计算。

发布了17 篇原创文章 · 获赞 1 · 访问量 350

猜你喜欢

转载自blog.csdn.net/weixin_46396354/article/details/104972738