/*
* Fibonacci.cpp
*
* Created on: 2015年7月17日
* Author: a002
*/
#include <iostream>
#include <vector>
using namespace std;
// 1. 递归实现
// 缺点: fib(n-1) + fib(n-2) 重新计算
int fib(int n)
{
if(n == 0||n == 1)
return 1;
else
return fib(n-1) + fib(n-2);
}
// 2. DP 实现
class Fib{
public:
Fib(){
self[0] = 1;
self[1] = 1;
}
int fib(int n)
{
for(int i = 2; i<n; i++)
{
//递推公式
self[i] = self[i-1] + self[i+2];
}
return self[n];
}
private:
//使用队列保存已经计算好数据
vector<int> self;
};
int test()
{
Fib f;
for(int i = 0; i < 10;i++)
{
if(fib(i) != f.fib(i))
cout<< "ERROR " << i << '\n';
else
cout<< "INFO" << i << '\n';
}
return 0;
}
转载于:https://my.oschina.net/badboy2/blog/479644