剑指Offer——I. 斐波那契数列(JS实现)

简介: 剑指Offer——I. 斐波那契数列(JS实现)

题目描述

image.png

解题思路

  • 本题如果直接使用递归进行计算,思路上是简单的,但是一定会超时,因为递归的时间复杂度太高,所以本题采用循环计算法。
  • 所谓循环计算法,就是用两个临时变量,指向第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;
};

总结(本题给我们的启示思路)

  • 学会通过循环计算法来解决斐波那契数列等递归问题。
相关文章
|
5月前
|
JavaScript 前端开发
JavaScript题解剑指offer : 09. 用两个栈实现队列
JavaScript题解剑指offer : 09. 用两个栈实现队列
24 0
|
存储 JavaScript 前端开发
《剑指 Offer(第 2 版)》队列部分 JavaScript 题解
《剑指 Offer(第 2 版)》队列部分 JavaScript 题解
|
JavaScript 前端开发 程序员
《剑指 Offer(第 2 版)》树部分JavaScript题解
《剑指 Offer(第 2 版)》树部分JavaScript题解
《剑指 Offer(第 2 版)》树部分JavaScript题解
|
存储 JavaScript 前端开发
《剑指 Offer (第 2 版)》链表部分 JavaScript 题解
《剑指 Offer (第 2 版)》链表部分 JavaScript 题解
《剑指 Offer (第 2 版)》链表部分 JavaScript 题解
|
JavaScript 前端开发
利用JavaScript实现二级联动
利用JavaScript实现二级联动 要实现JavaScript二级联动效果,首先要确定需要哪些技术: 二维数组 for in循环 new Option(text,value,true,true) add(option,null) onchange() 表单事件 HTML代码: &lt;!-- &lt;input type=&quot;text&quot; id=&quot;text&quot;&gt; --&gt; 请选择省份: &lt;select name=&quot;&quot; id=&quot;provinces&quot;&gt; &lt;!-- &lt;option value=&quot;江苏省&quot;&gt;江苏省&lt;/option&gt;
|
JavaScript 前端开发
JavaScript函数柯里化的实现原理,进来教你完成一个自己的自动实现柯里化方法
JavaScript函数柯里化的实现原理,进来教你完成一个自己的自动实现柯里化方法
167 0
|
移动开发 JavaScript weex
weex-自定义module,实现weex在iOS的本地化,js之间互相跳转,交互,传值(iOS接入weex的最佳方式)
weex-自定义module,实现weex在iOS的本地化,js之间互相跳转,交互,传值(iOS接入weex的最佳方式)
221 0
|
JavaScript
JS中实现或退出全屏
JS中实现或退出全屏
153 0
|
前端开发 JavaScript
前端:JS实现双击table单元格变为可编辑状态
前端:JS实现双击table单元格变为可编辑状态
366 0