剑指offer:实现斐波那契数列
题目描述
大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项。
- 时间限制:1秒空间限制:32768K
- 通过比例:25.93%
- 最佳记录:0 ms|3156K
斐波那契数列为:0,1,1,3,5,8,13,21,34,........
首先实现为:
class Solution {
public:
int Fibonacci(int n) {
if(n == 0 )
{
return 0;
}
else if(<span style="font-family: Arial, Helvetica, sans-serif;">n ==1</span>)
{ return 1;}
else
{
return Fibonacci(n-1)+Fibonacci(n-2);
}
}
};
运行超时,修改后为:
class Solution {
public:
int Fibonacci(int n) {
if(n == 0 || n ==1)
{
return n;
}
else
{
return Fibonacci(n-1)+Fibonacci(n-2);
}
}
};
仍然超时,发现只要是用递归,都会引起超时,这时考虑不用递归,采用数组的方法
class Solution {
public:
int Fibonacci(int n)
{
int A[71],i;
A[0]=0;A[1]=1;
for(i=2;i<71;++i)
A[i]=A[i-1]+A[i-2];
return A[n];
}
};