题目描述
解题思路
- 本题如果直接使用递归进行计算,思路上是简单的,但是一定会超时,因为递归的时间复杂度太高,所以本题采用循环计算法。
- 所谓循环计算法,就是用两个临时变量,指向第i个元素的前两个元素,随着i的更新而不断更新。
解题代码
var fib = function(n) {
if (n <= 1) return n;
let temp1 = 1;
let temp2 = 1;
let res;
for (let i = 0 ; i < n; i++) {
res = temp1;
temp1 = temp2;
temp2 = (res + temp1) % 1000000007
}
return res;
};
总结(本题给我们的启示思路)
- 学会通过循环计算法来解决斐波那契数列等递归问题。