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 学习笔记(十二) dom
Jan 21 Javascript
只需20行代码就可以写出CSS覆盖率测试脚本
Apr 24 Javascript
在firefox和Chrome下关闭浏览器窗口无效的解决方法
Jan 16 Javascript
javascript获取当前鼠标坐标的方法
Jan 10 Javascript
利用JQuery操作iframe父页面、子页面的元素和方法汇总
Sep 10 jQuery
Koa2微信公众号开发之本地开发调试环境搭建
May 16 Javascript
JS实现的文件拖拽上传功能示例
May 21 Javascript
浅析前端路由简介以及vue-router实现原理
Jun 01 Javascript
JS中封装axios来管控api的2种方式
Sep 11 Javascript
javaScript 实现重复输出给定的字符串的常用方法小结
Feb 20 Javascript
如何构建 vue-ssr 项目的方法步骤
Aug 04 Javascript
jquery实现鼠标悬浮弹出气泡提示框
Dec 23 jQuery
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
《忧国的莫里亚蒂》先导宣传图与STAFF公开
2020/03/04 日漫
CodeIgniter图像处理类的深入解析
2013/06/17 PHP
PHP中fwrite与file_put_contents性能测试代码
2013/08/02 PHP
PHP调用C#开发的dll类库方法
2014/07/28 PHP
纯php生成随机密码
2015/10/30 PHP
解读PHP的Yii框架中请求与响应的处理流程
2016/03/17 PHP
php curl操作API接口类完整示例
2019/05/21 PHP
php函数式编程简单示例
2019/08/08 PHP
Laravel框架数据库迁移操作实例详解
2020/04/06 PHP
用javascript实现读取txt文档的脚本
2007/07/20 Javascript
9个JavaScript评级/投票插件
2010/01/18 Javascript
Prototype源码浅析 Number部分
2012/01/16 Javascript
JavaScript中实现单体模式分享
2015/01/29 Javascript
举例说明如何为JavaScript的方法参数设置默认值
2015/11/17 Javascript
Ajax和Comet技术总结
2017/02/19 Javascript
详解javascript常用工具类的封装
2018/01/30 Javascript
json数据传到前台并解析展示成列表的方法
2018/08/06 Javascript
微信小程序中使用wxss加载图片并实现动画效果
2018/08/13 Javascript
VUE脚手架的下载和配置步骤详解
2019/04/01 Javascript
Fetch超时设置与终止请求详解
2019/05/18 Javascript
echarts多条折线图动态分层的实现方法
2019/05/24 Javascript
vue实现简单学生信息管理
2020/05/30 Javascript
vue.js实现h5机器人聊天(测试版)
2020/07/16 Javascript
详解在Python程序中自定义异常的方法
2015/10/16 Python
TensorFlow实现AutoEncoder自编码器
2018/03/09 Python
Python时间序列处理之ARIMA模型的使用讲解
2019/04/02 Python
Python 中PyQt5 点击主窗口弹出另一个窗口的实现方法
2019/07/04 Python
python用线性回归预测股票价格的实现代码
2019/09/04 Python
python如何实现不可变字典inmutabledict
2020/01/08 Python
Tensorflow实现在训练好的模型上进行测试
2020/01/20 Python
使用jupyter Nodebook查看函数或方法的参数以及使用情况
2020/04/14 Python
从Pytorch模型pth文件中读取参数成numpy矩阵的操作
2021/03/04 Python
简单html5代码获取地理位置
2014/03/31 HTML / CSS
公证委托书模板
2014/04/03 职场文书
2015年秋学期教研工作总结
2015/10/14 职场文书
Win11怎么把合并的任务栏分开 Win11任务栏合并分开教程
2022/04/06 数码科技