文章出自个人博客https://knightyun.github.io/2019/09/02/js-febonacci,转载请申明。


斐波那契(Febonacci)数列是一个神奇的数列,在很多地方都有应用,可以自行搜索相关图片体会其魅力,这里不赘述,直接来分析一下如何通过 JavaScript 来实现;

概念

斐波那契数列形式如下:

1 1 2 3 5 8 13 21 34...

规律应该很容易看出来,即从第三项开始,每一项的值等于前两项之和,以此类推下去,至于第一项和第二项的值嘛,不要纠结,就是这样规定的…

斐波那契数

首先来实现一下获取指定项的斐波那契数,即获取该数组中第 n 项的值;

方法一:

function getFebNum(n) {if (n == 1 || n == 2) {return 1;} else {return getFebNum(n - 1) + getFebNum(n - 2);}
}

方法一使用递归的思路,便于理解代码量也少,但是其算法复杂度较大,当 n 相当大的时候,程序运行也无比复杂;

方法二:

function _getFebNum(n) {if (n < 1) return 0;let one = 1, // 初始为第 -2 项two = 0, // 初始为第 -1 项three = 0; // 初始为第 1 项for (let i = 1; i <= n; i++) {three = one + two; one = two;two = three;}return three;
}

这种方法算法复杂度就比较小了,只是换了个获取思路,代码量增加也不太容易理解,其中为了缩减代码量,便于递推的进行,把斐波那契数列向后模拟扩展了两项:

-2 -1 1 2 3 4 5
1 0 1 1 2 3 5

斐波那契数列

接下来通过代码实现获取指定长度的斐波那契数列:

方法一:

function getFebArr(n) {let arr = [];for (let i = 1; i <= n; i++) {arr.push(getFebNum(i));}return arr;
}

这个方法通过挨个获取斐波那契数,最后组成一个斐波那契数列,需要用到前面的 getFebNum 函数;

方法二:

function _getFebArr(n) {let arr = [];if (n < 1) return arr;let one = 1,two = 0,three = 0;for (let i = 1; i <= n; i++) {three = one + two;arr.push(three);one = two;two = three;}return arr;
}

方法二利用之前 _getFebNum 方法的思路,递推地填充斐波那契数列,降低了算法复杂度;


技术文章推送 手机、电脑实用软件分享

JavaScript实现斐波那契数列(Febonacci Array)相关推荐

  1. js算法集合(二) javascript实现斐波那契数列 (兔子数列) Javascript实现杨辉三角...

    js算法集合(二)  斐波那契数列.杨辉三角 ★ 上一次我跟大家分享一下做水仙花数的算法的思路,并对其扩展到自幂数的算法,这次,我们来对斐波那契数列和杨辉三角进行研究,来加深对Javascript的理 ...

  2. JavaScript 打印斐波那契数列

    let readline = require("readline-sync"); console.log("输入你要打印的数列位数:(如 输入10 打印 34)" ...

  3. 经典兔子问题python视频_【Python】【demo实验14】【练习实例】【斐波那契数列】【经典兔子生小兔子问题】...

    古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少? 每个月的兔子数量 1:2 2:2 3:4 2+2 4:6 ...

  4. 力扣一日一练(7)——爬楼梯(斐波那契数列)

    题目:爬楼梯(斐波那契数列) 假设你正在爬楼梯.需要 n 阶你才能到达楼顶. 每次你可以爬 1 或 2 个台阶.你有多少种不同的方法可以爬到楼顶呢? 注意:给定 n 是一个正整数. 示例: 示例 1: ...

  5. JavaScript实现以数组形式返回斐波那契数列fibonacci算法(附完整源码)

    JavaScript实现以数组形式返回斐波那契数列fibonacci算法(附完整源码) fibonacci.js完整源代码 fibonacci.js完整源代码 export default funct ...

  6. python中斐波那契数列_斐波那契数列–在Python,JavaScript,C ++,Java和Swift中进行了解释...

    python中斐波那契数列 by Pau Pavón 通过保罗·帕文(PauPavón) The Fibonacci sequence is, by definition, the integer s ...

  7. 打印水仙花数oracle,javaScript实现回文数、水仙花数判断和输出斐波那契数列

    javaScript实现回文数.水仙花数判断和输出斐波那契数列 发布时间:2020-07-22 01:15:37 来源:51CTO 阅读:422 作者:Cynthia_xie // 判断一个数是不是回 ...

  8. python中求斐波那契数偶数和_[译] 斐波那契数列中的偶数 (Python vs. JavaScript)

    斐波那契数列中的偶数 (Python vs. JavaScript) 对于雇主来说,用某种方式来生成斐波那契数列是一道热门的面试题.而求斐波那契数列中的所有偶数便是其热门的变体之一.这里,我将用 Py ...

  9. JavaScript高级第2天:定义函数的三种方式、函数的原型链结构、完整原型链、作用域以及作用域链、函数的四种调用模式、闭包、计数器、斐波那契数列优化、三种继承方式

    JavaScript高级第二天 01-定义函数的三种方式 1.函数声明 function:可以先调用再声明,因为预解析(把函数声明.变量声明进行提升) function fn() {//函数体conl ...

最新文章

  1. 批量生成销售订单、退货订单
  2. 1:tcl-8.5.13-8.el7.x86_64: [Errno 256] No more mirrors to try.
  3. sqlite3数据库教程
  4. python pandas教程百家号_python--学习笔记6 pandas
  5. pb 插入报列在此处不_获取有关[在此处插入问题]的事实
  6. nios pio interrupt 的使能
  7. linux内核设计与实现---下半部和推后执行的工作
  8. 年薪百万!这所高校一名本科生入选“天才少年”
  9. jqGrid细节备注—jqGrid中自定义格式,URL格式
  10. centos7 yum安装mysql后启动不起来问题
  11. Webrtc中stun和turn的理解
  12. 类和对象的关系练习题:需求:将汽车改装成3个轮子的车并换个颜色。
  13. 计算机中的on有什么功能,计算机上的on/c起什么作用
  14. ERROR StatusLogger No log4j2 configuration file found. Using default configuration解决方式
  15. 张朝阳喊话俞敏洪:为什么还不退休?
  16. numpy | 取矩阵非零元素
  17. python画小动物_三分钟识别所有小动物!
  18. angularjs中ng-show与css中display:none的优先级问题
  19. PE文件格式粗浅认识
  20. Android学习文章推荐

热门文章

  1. 整理Java基础知识--NumberMath类
  2. 前端工程师技能之photoshop巧用系列扩展篇——自动切图
  3. 转 Phpstorm调试详解(包含命令行以及浏览器)
  4. Android pid uid
  5. MVVM架构~knockoutjs系列之验证信息自定义输出~再续
  6. C# - 自动生成分页存储过程
  7. linux+free参数类型,linux的free命令
  8. Open-Set recognition会议记录
  9. computed的原理
  10. nodejs 读取excel文件,并去重