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 相关文章推荐
有一段有意思的代码-javascript现实多行信息
Aug 26 Javascript
Jquery中的CheckBox、RadioButton、DropDownList的取值赋值实现代码
Oct 12 Javascript
js使用for循环与innerHTML获取选中tr下td值
Sep 26 Javascript
node.js中的fs.link方法使用说明
Dec 15 Javascript
JavaScript用select实现日期控件
Jul 17 Javascript
ng-options和ng-checked在表单中的高级运用(推荐)
Jan 21 Javascript
JavaScript 实现 Tab 点击切换实例代码
Mar 25 Javascript
React Native 搭建开发环境的方法步骤
Oct 30 Javascript
JSON基本语法及与JavaScript的异同实例分析
Jan 04 Javascript
用Fundebug插件记录网络请求异常的方法
Feb 21 Javascript
解决微信浏览器缓存站点入口文件(IIS部署Vue项目)
Jun 17 Javascript
javascript设计模式 ? 访问者模式原理与用法实例分析
Apr 26 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
为你总结一些php系统类函数
2015/10/21 PHP
Yii使用migrate命令执行sql语句的方法
2016/03/15 PHP
php的RSA加密解密算法原理与用法分析
2020/01/23 PHP
用javascript控制iframe滚动的代码
2007/04/10 Javascript
复制小说文本时出现的随机乱码的去除方法
2010/09/07 Javascript
推荐40个非常优秀的jQuery插件和教程【系列三】
2011/11/09 Javascript
jquery获取div宽度的实现思路与代码
2013/01/13 Javascript
jQuery读取XML文件内容的方法
2015/03/09 Javascript
JQuery显示隐藏DIV的方法及代码实例
2015/04/16 Javascript
javascript显示中文日期的方法
2015/06/18 Javascript
js行号显示的文本框实现效果(兼容多种浏览器 )
2015/10/23 Javascript
50 个 jQuery 插件可将你的网站带到另外一个高度
2016/04/26 Javascript
ionic开发中点击input时键盘自动弹出
2016/12/23 Javascript
vue实现鼠标移入移出事件代码实例
2019/03/27 Javascript
小程序根据手机机型设置自定义底部导航距离
2019/06/04 Javascript
vue 更改连接后台的api示例
2019/11/11 Javascript
vue实现购物车选择功能
2020/01/10 Javascript
[03:57]DOTA2英雄梦之声_第03期_幻影刺客
2014/06/21 DOTA
一个基于flask的web应用诞生 用户注册功能开发(5)
2017/04/11 Python
12个步骤教你理解Python装饰器
2019/07/01 Python
python调用HEG工具批量处理MODIS数据的方法及注意事项
2020/02/18 Python
Django操作session 的方法
2020/03/09 Python
python图片指定区域替换img.paste函数的使用
2020/04/09 Python
Django models文件模型变更错误解决
2020/05/11 Python
用python打开摄像头并把图像传回qq邮箱(Pyinstaller打包)
2020/05/17 Python
Python制作数据预测集成工具(值得收藏)
2020/08/21 Python
Gloeilampgoedkoop荷兰:在线购买灯泡
2019/02/16 全球购物
P D PAOLA法国官网:西班牙著名的珠宝首饰品牌
2020/02/15 全球购物
兰蔻法国官方网站:Lancôme法国
2020/02/22 全球购物
什么造成了Java里面的异常
2016/04/24 面试题
初中三好学生事迹材料
2014/01/13 职场文书
人民教师的自我评价分享
2014/02/21 职场文书
副主任竞聘演讲稿
2014/08/18 职场文书
乡党委干部党的群众路线教育实践活动个人对照检查材料思想汇报
2014/10/01 职场文书
幼儿园2014年度工作总结
2014/11/10 职场文书
react如何快速设置文件路径别名
2021/04/28 Javascript