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 网易相册鼠标移动显示隐藏效果实现代码
Mar 31 Javascript
jquery 倒计时效果实现秒杀思路
Sep 11 Javascript
jquery实现图片翻页效果
Dec 23 Javascript
Jquery插件编写简明教程
Mar 25 Javascript
jQuery实现仿美橙互联两级导航菜单的方法
Mar 09 Javascript
PHP+jquery+ajax实现分页
Dec 09 Javascript
JavaScript关联数组用法分析【概念、定义、遍历】
Mar 15 Javascript
vue双花括号的使用方法 附练习题
Nov 07 Javascript
利用Angular2 + Ionic3开发IOS应用实例教程
Jan 15 Javascript
AngularJS基于http请求实现下载php生成的excel文件功能示例
Jan 23 Javascript
Vue中使用clipboard实现复制功能
Sep 05 Javascript
javascript的var与let,const之间的区别详解
Feb 18 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中strlen和mb_strlen的区别
2014/08/31 PHP
PHP字符串word末字符实现大小写互换的方法
2014/11/10 PHP
Yii视图CGridView实现操作按钮定义地址示例
2016/07/14 PHP
php实现和c#一致的DES加密解密实例
2017/07/24 PHP
php中文乱码问题的终极解决方案汇总
2017/08/01 PHP
用window.location.href实现刷新另个框架页面
2007/03/07 Javascript
jquery的ajax和getJson跨域获取json数据的实现方法
2014/02/04 Javascript
使用jQuery实现input数值增量和减量的方法
2015/01/24 Javascript
jQuery实现的输入框选择时间插件用法实例
2015/02/28 Javascript
javascript截取字符串小结
2015/04/28 Javascript
通过js获取上传的图片信息(临时保存路径,名称,大小)然后通过ajax传递给后端的方法
2015/10/01 Javascript
全面解析Bootstrap中transition、affix的使用方法
2016/05/30 Javascript
基于JavaScript实现类名的添加与移除
2017/04/23 Javascript
JS立即执行函数功能与用法分析
2019/01/15 Javascript
js屏蔽退格键(backspace或者叫后退键与F5)
2019/02/10 Javascript
JavaScript实现无限级递归树的示例代码
2019/03/29 Javascript
vuex 实现getter值赋值给vue组件里的data示例
2019/11/05 Javascript
electron+vue实现div contenteditable截图功能
2020/01/07 Javascript
js+canvas实现图片格式webp/png/jpeg在线转换
2020/08/22 Javascript
如何利用vue实现波谱拟合详解
2020/11/05 Javascript
python实现飞机大战微信小游戏
2020/03/21 Python
从0开始的Python学习014面向对象编程(推荐)
2019/04/02 Python
python实现接口并发测试脚本
2019/06/25 Python
PyTorch笔记之scatter()函数的使用
2020/02/12 Python
python性能测试工具locust的使用
2020/12/28 Python
检测用户浏览器是否支持CSS3的方法
2009/08/29 HTML / CSS
html5指南-2.如何操作document metadata
2013/01/07 HTML / CSS
美国电子元器件分销商:Newark element14
2018/01/13 全球购物
英国运动风奢侈品购物网站:Maison De Fashion
2020/08/28 全球购物
采购主管工作职责
2013/12/12 职场文书
护士岗位求职应聘自荐书范文
2014/02/12 职场文书
大学四年个人自我小结
2014/03/05 职场文书
家长意见书
2015/06/04 职场文书
入学证明
2015/06/23 职场文书
七年级作文之关于奶奶
2019/10/29 职场文书
Android Rxjava3 使用场景详解
2022/04/07 Java/Android