题目:写一个函数,输入n,求斐波那契数列的第n项。
首先很容易能想到用递归的方法,但是递归又很多的重复运算,如果n很大,程序的效率就会很低,所以我们可以把每个数都保存下来,这样的话,会改进很多。用循环就可以解决。
#include <iostream>
using namespace std;
long long Fibonacci(unsigned int n)
{
int result[2] = {0, 1};
if(n < 2)
{
return result[n];
}
long long F1 = 1;
long long F2 = 0;
long long FN = 0;
for(unsigned int i = 2; i <= n; i++)
{
FN = F1 + F2;
F2 = F1;
F1 = FN;
}
return FN;
}
int main()
{
unsigned int n;
cout << "输入n" << endl;
cin >> n;
long long ret = Fibonacci(n);
cout << ret << endl;
return 0;
}