以下分别用递归,迭代,动态规划求解Fibonacci数列:
1 #include <iostream>
2 #include <ctime>
3 using namespace std;
4
5 int Fibonacci_R(int n)
6 {
7 if((n == 1)||(n == 2))
8 return 1;
9 else
10 return Fibonacci_R(n-1) + Fibonacci_R(n-2);
11 }
12
13 int Fibonacci_I(int n)
14 {
15 int A = 1;
16 int B = 1;
17 int C = 2;
18 int index;
19 if((n == 1)||(n == 2))
20 return 1;
21 for(index = 3; index <= n; ++index)
22 {
23 C = A + B;
24 A = B;
25 B = C;
26 }
27 return C;
28 }
29
30 int Fibonacci_D(int n)
31 {
32 int * pCache = new int[n]; //avoid stack overflow
33 pCache[0] = 1;
34 pCache[1] = 1;
35 for(int i = 2; i<n; ++i)
36 {
37 pCache[i] = pCache[i-1] + pCache[i-2];
38 }
39 int result = pCache[n-1];
40 delete [] pCache;
41 return result;
42 }
43