1 //斐波那契数列的简单递归显示(内存占用大) (严格来讲不算一个算法) 2 //利用公式an=an-1+an-2(n>1) 3 /*#include<iostream> 4 using namespace std; 5 int fib(int); 6 int main() 7 { 8 for(int i=0;i<40;i++) 9 cout<<fib(i)<<endl; 10 return 0; 11 } 12 int fib(int n) 13 { 14 return (n<=1)?n:fib(n-1)+fib(n-2); 15 }*/ 16 //记忆化搜索的改进 17 18 #include<iostream> 19 #include<cstring> 20 using namespace std; 21 const int MAXN=100; 22 int memo[MAXN]; 23 int fib(int); 24 int k=0; 25 int main() 26 { 27 for(k=0;k<MAXN;k++) 28 memo[k]=0; 29 for(int i=0;i<40;i++) 30 cout<<fib(i)<<endl; 31 return 0; 32 } 33 int fib(int n) 34 { 35 if(n<=1) return n; 36 if(memo[n]!=0) return memo[n]; 37 return memo[n]=fib(n-1)+fib(n-2); 38 }
1 // 求第n项fib数 2 int f[150]; 3 f[1] = f[2] = 1; 4 for(int i = 3;i < 110;i++) 5 f[i] = f[i-1] + f[i-2];