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 相关文章推荐
js获取下拉列表框中的value和text的值示例代码
Jan 11 Javascript
javascript实现无限级select联动菜单
Jan 02 Javascript
关于验证码在IE中不刷新的快速解决方法
Sep 23 Javascript
AngularJS extend用法详解及实例代码
Nov 15 Javascript
js addDqmForPP给标签内属性值加上双引号的函数
Dec 24 Javascript
Vuex 在Vue 组件中获得Vuex 状态state的方法
Aug 27 Javascript
在Create React App中使用CSS Modules的方法示例
Jan 15 Javascript
JavaScript中var的重要性实例分析
Jul 09 Javascript
详解element-ui中表单验证的三种方式
Sep 18 Javascript
Vue父子之间值传递的实例教程
Jul 02 Javascript
详解如何在Javascript中使用Object.freeze()
Oct 18 Javascript
微信小程序APP的生命周期及页面的生命周期
Apr 19 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中有关字符串的4个函数substr、strrchr、strstr、ereg介绍和使用例子
2014/04/24 PHP
PHP过滤黑名单关键字的方法
2014/12/01 PHP
Smarty模板变量调节器用法分析
2016/05/23 PHP
php的对象传值与引用传值代码实例讲解
2021/02/26 PHP
php框架知识点的整理和补充
2021/03/01 PHP
js 表格隔行颜色
2009/12/02 Javascript
巧用replace将文字表情替换为图片
2014/04/17 Javascript
jQuery实现导航滚动到指定内容效果完整实例【附demo源码下载】
2016/09/20 Javascript
9个让JavaScript调试更简单的Console命令
2016/11/14 Javascript
微信小程序 数组(增,删,改,查)等操作实例详解
2017/01/05 Javascript
JavaScript实现翻页功能(附效果图)
2017/02/16 Javascript
jQuery的三种bind/One/Live/On事件绑定使用方法
2017/02/23 Javascript
JavaScript实现写入文件到本地的方法【基于FileSaver.js插件】
2018/03/15 Javascript
webpack实现一个行内样式px转vw的loader示例
2018/09/13 Javascript
微信小程序如何修改本地缓存key中单个数据的详解
2019/04/26 Javascript
vue实现鼠标移过出现下拉二级菜单功能
2019/12/12 Javascript
Python中的index()方法使用教程
2015/05/18 Python
使用Python求解最大公约数的实现方法
2015/08/20 Python
利用Python为iOS10生成图标和截屏
2016/09/24 Python
Python基于回溯法子集树模板解决最佳作业调度问题示例
2017/09/08 Python
python基于C/S模式实现聊天室功能
2019/01/09 Python
Django 中自定义 Admin 样式与功能的实现方法
2019/07/04 Python
python性能测量工具cProfile使用解析
2019/09/26 Python
python 动态调用函数实例解析
2019/10/21 Python
Django 自动生成api接口文档教程
2019/11/19 Python
python多进程下的生产者和消费者模型
2020/05/07 Python
详解解决jupyter不能使用pytorch的问题
2021/02/18 Python
CSS3实现简易版的刮刮乐效果
2016/09/27 HTML / CSS
冰淇淋店创业计划书范文
2013/12/27 职场文书
八项规定整改方案
2014/02/21 职场文书
《逃家小兔》教学反思
2014/02/23 职场文书
员工入职担保书范文
2014/04/01 职场文书
报关报检委托书
2014/04/08 职场文书
高二学生评语大全
2014/04/25 职场文书
省级优秀班集体申报材料
2014/05/25 职场文书
2014年安全生产工作总结
2014/11/13 职场文书