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

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

代码

#include
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数组保存已经计算过的数据,在需要的时候直接取出,不需要再重复浪费时间再次计算。

你可能感兴趣的:(斐波那契数列(记忆化搜索)