#include <iostream>
#include <vector>
using namespace std;
int num = 0;
vector<int> vec;
int Fibonacci(int n){
++ num;
cout << "第" << num <<"次 ";
if(n == 1 || n == 2){
vec[n] = 1;
cout << 1 << "\n";
return 1;
}
if(vec[n] != 0){
return vec[n];
}
int b = Fibonacci(n - 1) + Fibonacci(n - 2);
vec[n] = b;
cout << b << "\n";
return b;
}
int main(){
int a;
cout << "请输入斐波那契数列长度:";
cin >> a;
vec = vector<int>(a+1, 0);
a = Fibonacci(a);
std::vector<int>::iterator it = vec.begin() +1;
for(; it != vec.end(); ++it){
cout << *it << "\t";
}
cout << "斐波那契数列是:" << a << endl << "计算次数:" << num << endl;
}
此版本运行速度加快,原版可参见我的上一篇文章《C++ 斐波那契数列递归求解》。