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中的运用上部
Nov 20 Javascript
JQuery.uploadify 上传文件插件的使用详解 for ASP.NET
Jan 22 Javascript
JavaScript也谈内存优化
Jun 06 Javascript
javascript实现微信分享
Dec 23 Javascript
Javascript闭包用法实例分析
Jan 23 Javascript
基于BootStrap Metronic开发框架经验小结【六】对话框及提示框的处理和优化
May 12 Javascript
AngularJS基础 ng-repeat 指令简单示例
Aug 03 Javascript
原生JS实现首页进度加载动画
Sep 14 Javascript
原生JS实现垂直手风琴效果
Feb 19 Javascript
详解Angular的8个主要构造块
Jun 20 Javascript
js实现滑动进度条效果
Aug 21 Javascript
OpenLayers实现图层切换控件
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
解析php中const与define的应用区别
2013/06/18 PHP
php计算当前程序执行时间示例
2014/04/24 PHP
ThinkPHP模板IF标签用法详解
2014/07/01 PHP
php中time()与$_SERVER[REQUEST_TIME]用法区别
2014/11/19 PHP
CI(CodeIgniter)模型用法实例分析
2016/01/20 PHP
PHP使用SOAP调用API操作示例
2018/12/25 PHP
js操纵跨frame的三级联动select下拉选项实例介绍
2013/05/19 Javascript
JQuery事件e参数的方法preventDefault()取消默认行为
2013/09/26 Javascript
jQuery实现的一个自定义Placeholder属性插件
2014/08/11 Javascript
js生成随机数的过程解析
2015/11/24 Javascript
Bootstrap每天必学之响应式导航、轮播图
2016/04/25 Javascript
利用Bootstrap实现表格复选框checkbox全选
2016/12/21 Javascript
js实现3D图片展示效果
2017/03/09 Javascript
js 用于检测类数组对象的函数方法
2017/05/02 Javascript
原生JS实现自定义滚动条效果
2020/10/27 Javascript
vue axios 在页面切换时中断请求方法 ajax
2018/03/05 Javascript
在vue中,v-for的索引index在html中的使用方法
2018/03/06 Javascript
vuejs使用axios异步访问时用get和post的实例讲解
2018/08/09 Javascript
微信小程序实现点击效果
2019/06/21 Javascript
在Python中使用cookielib和urllib2配合PyQuery抓取网页信息
2015/04/25 Python
Python网络编程详解
2017/10/31 Python
Python运维自动化之nginx配置文件对比操作示例
2018/08/29 Python
使用Python如何测试InnoDB与MyISAM的读写性能
2018/09/18 Python
Django实现发送邮件找回密码功能
2019/08/12 Python
基于MATLAB和Python实现MFCC特征参数提取
2019/08/13 Python
手机使用python操作图片文件(pydroid3)过程详解
2019/09/25 Python
详解python tkinter模块安装过程
2020/01/06 Python
keras中epoch,batch,loss,val_loss用法说明
2020/07/02 Python
Python3读写ini配置文件的示例
2020/11/06 Python
pycharm 如何取消连按两下shift出现的全局搜索
2021/01/15 Python
Java基础类库面试题
2013/09/04 面试题
前台领班岗位职责
2013/12/04 职场文书
行政文员实习自我鉴定范文
2014/09/14 职场文书
领导班子在批评与自我批评座谈会上的发言
2014/09/28 职场文书
2015年女职工工作总结
2015/05/15 职场文书
先进基层党组织主要事迹材料
2015/11/03 职场文书