首页 > 代码库 > 斐波那契数列

斐波那契数列

 1 /*
 2 斐波那契的递归实现和记忆化思想
 3 在动态规划中,常常会涉及斐波那契数列
 4 下面介绍斐波那契的循环打表,递归的实现、打表
 5 借鉴自《挑战程序设计竞赛》
 6 */
 7 #include<iostream>
 8 using namespace std;
 9 const int maxn = 40;
10 int f[maxn+5];
11 /*
12 void fib(int n)//循环打表
13 {
14     f[1] = f[2] = 1;
15     for(int i=3; i<=n; ++i)
16         f[i] = f[i-1] + f[i-2];
17 }
18 int fib(int n)//递归实现
19 {
20     if(n <= 1) return n;// f[1] = 1;f[2] = 1;
21     return fib(n-1) + fib(n-2);
22 }*/
23 int fib(int n)//通过数组f记录已经算过的fib
24 {
25     if(n <= 1) return n;
26     if(f[n] != 0) return f[n];
27     return f[n] = fib(n-1) + fib(n-2);
28 }
29 int main()
30 {
31     for(int i=1; i<=maxn; ++i)
32         cout << fib(i) << " ";
33     cout << endl;
34 }

 

斐波那契数列