##计算斐波那契数列的函数
#题目要求用递归方法,n取0--90,所有运算在30秒内完成
我写的代码运算花费的时间很长,大概在接近50的时候就开始超时了,如何优化一下?
#include <iostream>
using namespace std;
long long fibonacci[91]; //储存已经计算的数列
long long fibonacci_calculate(int n) {
if (n == 0) { fibonacci[0] = 0; return 0; }
if (n == 1) { fibonacci[1] = 1; return 1; }
if (n == 2) { fibonacci[2] = 1; return 1; }
else {
fibonacci[n] = fibonacci_calculate(n - 1)+fibonacci_calculate(n - 2);
return fibonacci[n];
}
}
//斐波那契数列的递归函数
int main() {
int ops=0; //储存到几的斐波那契数列
int n;
while (1) {
cin >> n; //当前要的项数
if (cin.fail()) { //输入的是char型,fail()函数会返回true,进入if
cin.clear();
cin.ignore();
cout << "WRONG" << endl;
}
else { //输入合法
if (n <= ops) { cout << fibonacci[n] << endl; } //n<ops直接提取
else {
cout << fibonacci_calculate(n) << endl;
ops = n;
}
//n>ops,计算斐波那契数列
}
}
return 0;
}