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 相关文章推荐
终于解决了IE8不支持数组的indexOf方法
Apr 03 Javascript
js函数在frame中的相互调用详解
Mar 03 Javascript
百度地图给map添加右键菜单(判断是否为marker)
Mar 04 Javascript
JS实现图片剪裁并预览效果
Aug 12 Javascript
mvc 、bootstrap 结合分布式图简单实现分页
Oct 10 Javascript
原生Javascript插件开发实践
Jan 18 Javascript
解决vue里碰到 $refs 的问题的方法
Jul 13 Javascript
在Vue项目中取消ESLint代码检测的步骤讲解
Jan 27 Javascript
微信小程序(订阅消息)功能
Oct 25 Javascript
详解React路由传参方法汇总记录
Nov 29 Javascript
JavaScript 判断浏览器是否是IE
Feb 19 Javascript
javascript的setTimeout()使用方法总结
Nov 20 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生成迅雷、快车、旋风等软件的下载链接代码实例
2014/05/12 PHP
浅谈php错误提示及查错方法
2015/07/14 PHP
php简单实现数组分页的方法
2016/04/30 PHP
PHP实现上传多文件示例代码
2017/02/20 PHP
php实现支持中文的文件下载功能示例
2017/08/30 PHP
JavaScript 全面解析各种浏览器网页中的JS 执行顺序
2009/02/17 Javascript
图片上传插件jquery.uploadify详解
2013/11/15 Javascript
[将免费进行到底]在Amazon的一年免费服务器上安装Node.JS, NPM和OurJS博客
2014/08/18 Javascript
实例讲解JQuery中this和$(this)区别
2014/12/08 Javascript
avalon js实现仿google plus图片多张拖动排序附源码下载
2015/09/24 Javascript
jquery实现手风琴效果
2015/11/20 Javascript
JS实现输入框提示文字点击时消失效果
2016/07/19 Javascript
JSON对象转化为字符串详解
2017/08/11 Javascript
在vue-cli中组件通信的方法
2017/12/16 Javascript
详解webpack loader和plugin编写
2018/10/12 Javascript
bootstrap table实现横向合并与纵向合并
2019/07/18 Javascript
Angular封装表单控件及思想总结
2019/12/11 Javascript
Vue实现购物小球抛物线的方法实例
2020/11/22 Vue.js
[51:39]DOTA2-DPC中国联赛 正赛 Magma vs LBZS BO3 第二场 2月7日
2021/03/11 DOTA
Python 字符串操作实现代码(截取/替换/查找/分割)
2013/06/08 Python
python集成开发环境配置(pycharm)
2020/02/14 Python
使用Dajngo 通过代码添加xadmin用户和权限(组)
2020/07/03 Python
Python经纬度坐标转换为距离及角度的实现
2020/11/01 Python
python实现马丁策略的实例详解
2021/01/15 Python
城市观光通行证:The Sightseeing Pass
2018/04/28 全球购物
自然健康的概念:Natural Healthy Concepts
2020/01/26 全球购物
递归计算如下递归函数的值(斐波拉契)
2012/02/04 面试题
解释一下Windows的消息机制
2014/01/30 面试题
小学运动会广播稿200字(十二篇)
2014/01/14 职场文书
保护环境倡议书
2014/04/14 职场文书
森林防火标语
2014/06/23 职场文书
四风查摆问题自查报告
2014/10/10 职场文书
电子银行业务授权委托书
2014/10/10 职场文书
上班迟到检讨书范文
2015/05/06 职场文书
最新的离婚协议书范本!
2019/07/02 职场文书
python保存大型 .mat 数据文件报错超出 IO 限制的操作
2021/05/10 Python