题目描述
大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0)。
n<=39
方法一:
很慢
class Solution {
public:
int Fibonacci(int n) {
if (n == 0)
return 0;
else if (n == 1)
return 1;
else if (n == 2)
return 1;
else
return Fibonacci(n - 1) + Fibonacci(n - 2);
}
};
方法二:
递归包含大量重复运算时间慢;
提交代码:方案二
class Solution {
public:
int Fibonacci(int n) {
long int f0 = 0;
long int f1 = 1;
if (n==0)
{
return f0;
}
if (n==1)
{
return f1;
}
long int fn = 0;
for (int i=2;i<=n;i++)
{
fn = f0 + f1;
f0 = f1;
f1 = fn;
}
return fn;
}
};
测试代码:
int main()
{
Solution *s = new Solution();
long int out =s->Fibonacci(33);
cout << out << endl;
system("pause");
return 0;
}