#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++ 斐波那契数列递归求解》。
本文介绍了一种使用C++实现的优化版斐波那契数列算法,通过动态规划的方法减少重复计算,提高计算效率。相较于传统递归方法,此版本大大提升了运行速度。

被折叠的 条评论
为什么被折叠?



