题目描述
解题思路
- 本题如果直接使用递归进行计算,思路上是简单的,但是一定会超时,因为递归的时间复杂度太高,所以本题采用循环计算法。
- 所谓循环计算法,就是用两个临时变量,指向第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; };
总结(本题给我们的启示思路)
- 学会通过循环计算法来解决斐波那契数列等递归问题。