题目描述
大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0,第1项是1)。
n<=39
题目给出的代码框架:
class Solution {
public:
int Fibonacci(int n) {
}
};
题目分析
- 不可用递归算法,时间复杂度O(2的n次方)非常大,不会通过的
- 非递归算法(循环算法最简单),思路如下
- 斐波那契数列求值采用自底向上(循环)的方式,已知前两项的值(a做+的右侧值,b做+的左侧值,继而1+1=2,1+2=3,2+3=5这种方式开始求斐波那契数列的后面的值),然后我们就可以用前两项的值相加求出第3项的值,这样接着求第4、第5、……,直到求出第n项的值。
题解代码
class Solution {
public:
int Fibonacci(int n) {
int a=0,b=1;
for(int i=1;i<=n;i++)
{
a=a+b;
b=a-b;
}
return a;
}
};