1 #include <iostream>
2 #include <map>
3
4 using namespace std;
5
6 map<int, unsigned long long> fibMap;
7 unsigned long long fibDemo4(int i);
8
9 int main()
10 {
11 for (int i = 1; i < 50; i++)
12 {
13 cout << "i= " << i << ",fib result= " << fibDemo4(i)<< endl;
14 }
15 getchar();
16 }
17
18
19 unsigned long long fibDemo4(int i)
20 {
21 map<int, unsigned long long>::iterator itr;
22 itr = fibMap.find(i);
23 if (itr!=fibMap.end())
24 {
25 return itr->second;
26 }
27
28 if (i == 1 || i==2)
29 {
30 if (i == 1)
31 {
32 fibMap.insert(pair<int, unsigned long long>(1, 1));
33 }
34 else
35 {
36 fibMap.insert(pair<int, unsigned long long>(2, 1));
37 }
38 return 1;
39 }
40 else
41 {
42 unsigned long long result = fibDemo4(i - 2) + fibDemo4(i - 1);
43 fibMap.insert(pair<int, unsigned long long>(i, result));
44 return result;
45 }
46 }
![]()