JS实现斐波那契数列的五种方式(小结)


Posted in Javascript onSeptember 09, 2020

下面是五种实现斐波那契数列的方法

循环

function fibonacci(n){
 var res1 = 1;
 var res2 = 1;
 var sum = res2;
 for(var i = 1;i < n;i ++){
   sum = res1 + res2;
   res1 = res2;
   res2 = sum;
 }
 return sum;
}

普通递归

function fibonacci (n) {
 if ( n <= 1 ) {return 1};
 return fibonacci(n - 1) + fibonacci(n - 2);
}

尾递归

function fibonacci(n, ac1=1,ac2=1){
  if(n<=1){return ac2}
 return fibonacci(n-1, ac2, ac1 + ac2)
}
Generator 函数和for...of循环
// Generator 函数和for...of循环
function* fibonacci() {
 let [prev, curr] = [0, 1];
// foo(;;)相当于死循环 等于while(1)
 for (;;) {
  yield curr;
  [prev, curr] = [curr, prev + curr];
 }
}
for (let n of fibonacci()) {
 if (n > 1000) break;
 console.log(n);
}

闭包实现

const fibonacci = function(){
  var mem = [0,1];
  var f = function(n){
    var res = mem[n];
    if(typeof res !== 'number'){
      mem[n] = f(n-1) + f(n-2);
      res = mem[n];
    }
    return res;
  }
  return f;
}();

到此这篇关于JS实现斐波那契数列的五种方式(小结)的文章就介绍到这了,更多相关JS 斐波那契数列内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Javascript 相关文章推荐
动态调用css文件——jquery的应用
Feb 20 Javascript
JQuery操作单选按钮以及复选按钮示例
Sep 23 Javascript
jquery 操作iframe的几种方法总结
Dec 13 Javascript
jquery带动画效果幻灯片特效代码
Aug 27 Javascript
js实现的简单图片浮动效果完整实例
May 10 Javascript
AngularJS 作用域详解及示例代码
Aug 17 Javascript
less简单入门(CSS 预处理语言)
Mar 08 Javascript
一篇看懂vuejs的状态管理神器 vuex状态管理模式
Apr 20 Javascript
vue-cli中打包图片路径错误的解决方法
Oct 26 Javascript
详解Vue快速零配置的打包工具——parcel
Jan 16 Javascript
在Vant的基础上封装下拉日期控件的代码示例
Dec 05 Javascript
微信小程序云开发修改云数据库中的数据方法
May 18 Javascript
JavaScript代码简化技巧实例解析
Sep 09 #Javascript
vue 手机物理监听键+退出提示代码
Sep 09 #Javascript
关于angular引入ng-zorro的问题浅析
Sep 09 #Javascript
关于vue的列表图片选中打钩操作
Sep 09 #Javascript
JavaScript日期库date-fn.js使用方法解析
Sep 09 #Javascript
js实现简单抽奖功能
Nov 24 #Javascript
js实现贪吃蛇游戏 canvas绘制地图
Sep 09 #Javascript
You might like
分页显示Oracle数据库记录的类之一
2006/10/09 PHP
dede3.1分页文字采集过滤规则详说(图文教程)
2007/04/03 PHP
php中sql注入漏洞示例 sql注入漏洞修复
2014/01/24 PHP
让你的CSS像Jquery一样做筛选的实现方法
2011/07/10 Javascript
js实现addClass,removeClass,hasClass的函数代码
2011/07/13 Javascript
Jquery 点击按钮自动高亮实现原理及代码
2014/04/25 Javascript
javascript跨域原因以及解决方案分享
2015/04/08 Javascript
Nodejs抓取html页面内容(推荐)
2016/08/11 NodeJs
浅谈webpack打包过程中因为图片的路径导致的问题
2018/02/21 Javascript
Vue源码探究之状态初始化
2018/11/14 Javascript
PHP实现基于Redis的MessageQueue队列封装操作示例
2019/02/02 Javascript
mocha的时序规则讲解
2019/02/16 Javascript
js实现无缝轮播图效果
2020/03/09 Javascript
何时/使用 Vue3 render 函数的教程详解
2020/07/25 Javascript
关于Node.js中频繁修改代码重启服务器的问题
2020/10/15 Javascript
[02:03]DOTA2亚洲邀请赛 HGT战队出场宣传片
2015/02/07 DOTA
Python中的二叉树查找算法模块使用指南
2014/07/04 Python
使用py2exe在Windows下将Python程序转为exe文件
2016/03/04 Python
python实现中文转换url编码的方法
2016/06/14 Python
基于python脚本实现软件的注册功能(机器码+注册码机制)
2016/10/09 Python
PyQt5利用QPainter绘制各种图形的实例
2017/10/19 Python
Python中的random.uniform()函数教程与实例解析
2019/03/02 Python
python爬虫 模拟登录人人网过程解析
2019/07/31 Python
在pytorch中查看可训练参数的例子
2019/08/18 Python
python推导式的使用方法实例
2021/02/28 Python
JBL美国官方商店:扬声器、耳机等
2019/12/01 全球购物
几个常见的软件测试问题
2016/09/07 面试题
蔬菜基地的创业计划书
2014/01/06 职场文书
单位刻章介绍信范文
2014/01/11 职场文书
入党积极分子学习两会心得体会范文
2014/03/17 职场文书
学校节能减排倡议书
2014/05/16 职场文书
优秀应届生求职信
2014/06/16 职场文书
环境监测与治理技术专业求职信
2014/07/06 职场文书
2014年文艺部工作总结
2014/11/17 职场文书
2015年毕业生个人自荐书
2015/03/24 职场文书
2019年让高校“心动”的自荐信
2019/03/25 职场文书