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原生对象之Number对象的属性和方法详解
Mar 13 Javascript
JQuery Ajax WebService传递参数的简单实例
Nov 02 Javascript
jquery easyui validatebox remote的使用详解
Nov 09 Javascript
jquery获取easyui日期控件的值实现方法
Nov 09 Javascript
设置jquery UI 控件的大小方法
Dec 12 Javascript
基于jQuery封装的分页组件
Jun 26 jQuery
bootstrap 点击空白处popover弹出框隐藏实例
Jan 24 Javascript
JS对象与json字符串相互转换实现方法示例
Jun 14 Javascript
Vue-Router基础学习笔记(小结)
Oct 15 Javascript
Vue使用.sync 实现父子组件的双向绑定数据问题
Apr 04 Javascript
javascript实现的字符串转换成数组操作示例
Jun 13 Javascript
vue.js 实现a标签href里添加参数
Nov 12 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之十六个魔术方法详细介绍
2016/11/01 PHP
php和redis实现秒杀活动的流程
2019/07/17 PHP
JavaScript开发时的五个注意事项
2007/12/08 Javascript
Jquery 快速构建可拖曳的购物车DragDrop
2009/11/30 Javascript
js bind 函数 使用闭包保存执行上下文
2011/12/26 Javascript
js关于字符长度限制的问题示例探讨
2014/01/24 Javascript
现代 JavaScript 开发编程风格Idiomatic.js指南中文版
2014/05/28 Javascript
jQuery中[attribute=value]选择器用法实例
2014/12/31 Javascript
JavaScript移除数组内重复元素的方法
2015/03/18 Javascript
jQuery延迟加载图片插件Lazy Load使用指南
2015/03/25 Javascript
原创jQuery弹出层插件分享
2015/04/02 Javascript
javascript实现状态栏文字首尾相接循环滚动的方法
2015/07/22 Javascript
AngularJS模板加载用法详解
2016/11/04 Javascript
jQuery图片瀑布流的简单实现代码
2017/03/15 Javascript
详解如何在Vue2中实现组件props双向绑定
2017/03/29 Javascript
js图片上传的封装代码
2017/08/01 Javascript
Iview Table组件中各种组件扩展的使用
2018/10/20 Javascript
Vue项目打包部署到iis服务器的配置方法
2019/10/14 Javascript
Vue + ts实现轮播插件的示例
2020/11/10 Javascript
[13:56]DAC2018 4.5SOLO赛决赛 MidOne vs Paparazi第一场
2018/04/06 DOTA
深入浅析python定时杀进程
2016/06/06 Python
python中类的属性和方法介绍
2018/11/27 Python
Django 创建后台,配置sqlite3教程
2019/11/18 Python
python 字典套字典或列表的示例
2019/12/16 Python
python 使用paramiko模块进行封装,远程操作linux主机的示例代码
2020/12/03 Python
TensorFlow2.0使用keras训练模型的实现
2021/02/20 Python
如何保障Web服务器安全
2014/05/05 面试题
汽车检测与维修个人求职信
2013/09/24 职场文书
大学生自我评价怎样写好
2013/10/23 职场文书
安全生产汇报材料
2014/02/17 职场文书
学习张林森心得体会
2014/09/10 职场文书
个人房屋买卖协议书(范本)
2014/10/04 职场文书
2014年幼儿园德育工作总结
2014/12/17 职场文书
2015年五四青年节演讲稿
2015/03/18 职场文书
pytorch 如何把图像数据集进行划分成train,test和val
2021/05/31 Python
python的变量和简单数字类型详解
2021/09/15 Python