思路:
1. 这题在很多教材里是出现在递归这章节的。所以很多人直接上来就用递归解这题。虽然思想没错,但是当数字变大后,是不是发现内存不够用了。那就对了,递归是非常占用内存的。
2. 那用什么代替递归呢? 我们这题直接用数组vector的性质,将前两个数字保存到数组中,然后直接将前面两个的数字相加得出后面的数字,以此类推就行了。
牛客网AC代码如下
#include <iostream>
#include <vector>
using namespace std;
int Fibonacci(int n) {
vector<int> re;
re.push_back(0);
re.push_back(1);
for (int i = 2; i <= n; i++) {
re.push_back(re[i - 1] + re[i - 2]);
}
return re[n];
}
int main()
{
// 0 1 1 2 3 5 8 13
cout << Fibonacci(7) << endl;
}