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 相关文章推荐
jquery入门—数据删除与隔行变色以及图片预览
Jan 07 Javascript
用显卡加速,轻松把笔记本打造成取暖器的办法!
Apr 17 Javascript
JQuery实现点击div以外的位置隐藏该div窗口
Sep 13 Javascript
jQuery实现异步获取json数据的2种方式
Aug 29 Javascript
node.js使用npm 安装插件时提示install Error: ENOENT报错的解决方法
Nov 20 Javascript
jQuery 回调函数(callback)的使用和基础
Feb 26 Javascript
BootStrap扔进Django里的方法详解
May 13 Javascript
Ionic如何创建APP项目
Jun 03 Javascript
jQuery animate easing使用方法图文详解
Jun 17 Javascript
jquery网页加载进度条的实现
Jun 01 jQuery
微信小程序实现皮肤功能(夜间模式)
Jun 18 Javascript
js仿微信抢红包功能
Sep 25 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
Yii2 assets清除缓存的方法
2016/05/16 PHP
JavaScript 组件之旅(四):测试 JavaScript 组件
2009/10/28 Javascript
JS实现定时自动关闭DIV层提示框的方法
2015/05/11 Javascript
详解微信小程序——自定义圆形进度条
2016/12/29 Javascript
MUI 解决动态列表页图片懒加载再次加载不成功的bug问题
2017/04/13 Javascript
js下载文件并修改文件名
2017/05/08 Javascript
JavaScript反弹动画效果的实现代码
2017/07/13 Javascript
浅析Vue中method与computed的区别
2018/03/06 Javascript
react-native 圆弧拖动进度条实现的示例代码
2018/04/12 Javascript
express + jwt + postMan验证实现持久化登录
2019/06/05 Javascript
微信小程序实现购物车代码实例详解
2019/08/29 Javascript
layui的layedit富文本赋值方法
2019/09/18 Javascript
使用vue重构资讯页面的实例代码解析
2019/11/26 Javascript
vue实践---vue不依赖外部资源实现简单多语操作
2020/09/21 Javascript
python 测试实现方法
2008/12/24 Python
python自动化测试实例解析
2014/09/28 Python
在SAE上部署Python的Django框架的一些问题汇总
2015/05/30 Python
Python判断Abundant Number的方法
2015/06/15 Python
Python设计模式编程中Adapter适配器模式的使用实例
2016/03/02 Python
Python实现堆排序的方法详解
2016/05/03 Python
Python编程产生非均匀随机数的几种方法代码分享
2017/12/13 Python
python实现多层感知器
2019/01/18 Python
Keras实现支持masking的Flatten层代码
2020/06/16 Python
Python 抓取数据存储到Redis中的操作
2020/07/16 Python
python利用google翻译方法实例(翻译字幕文件)
2020/09/21 Python
Pycharm 设置默认解释器路径和编码格式的操作
2021/02/05 Python
5个你不知道的HTML5的接口介绍
2013/08/07 HTML / CSS
环境科学专业大学生自荐信格式
2013/09/21 职场文书
电焊工工作岗位职责
2014/02/06 职场文书
电视购物广告词
2014/03/19 职场文书
端午节演讲稿
2014/05/23 职场文书
连锁超市项目计划书
2014/09/15 职场文书
2015新生加入学生会自荐书
2015/03/24 职场文书
2016国庆节67周年寄语
2015/12/07 职场文书
Python文件的操作示例的详细讲解
2021/04/08 Python
python 批量压缩图片的脚本
2021/06/02 Python