7.斐波那契数列
题目描述
大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0)。n<=39
思路
常规: 基于递归来实现
可以发现 在这棵树中有很多结点是重复的,而且重复的结点数会随着n的增加而急剧增加,这意味计算量会随着n的增加而急剧增大。事实上,递归方法计算的时间复杂度是以n的指数的方式递增的。所以,使用简单的循环方法来实现。
代码实现
class Solution {
public:
int Fibonacci(int n) {
int result[2] = {0, 1};
if (n < 2) {
return result[n];
}
int fibNminusOne = 1, fibNminusTwo = 0, fibN = 0; //函数赋初值
for (int i = 2; i <= n; i++) {
fibN = fibNminusOne + fibNminusTwo;
fibNminusTwo = fibNminusOne;
fibNminusOne = fibN;
}
return fibN;
}
};