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 闭包引起的IE内存泄露分析
May 23 Javascript
jQuery学习笔记之 Ajax操作篇(二) - 数据传递
Jun 23 Javascript
javascript检测两个数组是否相似
May 19 Javascript
JavaScript中数据结构与算法(二):队列
Jun 19 Javascript
javascript实现数组去重的多种方法
Mar 14 Javascript
jQuery使用serialize()表单序列化时出现中文乱码问题的解决办法
Jul 27 Javascript
vue-cli入门之项目结构分析
Apr 20 Javascript
Bootstrap输入框组件使用详解
Jun 09 Javascript
详解vue.js+UEditor集成 [前后端分离项目]
Jul 07 Javascript
浅谈Webpack打包优化技巧
Jun 12 Javascript
vue.js封装switch开关组件的操作
Oct 26 Javascript
微信小程序接入vant Weapp组件的详细步骤
Oct 28 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
php5.3中连接sqlserver2000的两种方法(com与ODBC)
2012/12/29 PHP
PHP编程中尝试程序并发的几种方式总结
2016/03/21 PHP
laravel migrate初学常见错误的解决方法
2017/10/11 PHP
laravel 解决路由除了根目录其他都404的问题
2019/10/18 PHP
PHP 数组操作详解【遍历、指针、函数等】
2020/05/13 PHP
基于jquery库的tab新形式使用
2012/11/16 Javascript
ajax页面无刷新 IE下遭遇Ajax缓存导致数据不更新的问题
2012/12/11 Javascript
JavaScript的漂亮的代码片段
2013/06/05 Javascript
jquery parent和parents的区别分析
2013/10/02 Javascript
如何判断鼠标是否在DIV的区域内
2013/11/13 Javascript
javascript trim函数在IE下不能用的解决方法
2014/09/12 Javascript
JavaScript中标识符提升问题
2015/06/11 Javascript
javascript日期处理函数,性能优化批处理
2015/09/06 Javascript
JS通过调用微信API实现微信支付功能的方法示例
2017/06/29 Javascript
详谈ES6中的迭代器(Iterator)和生成器(Generator)
2017/07/31 Javascript
vuex的简单使用教程
2018/02/02 Javascript
Vue 后台管理类项目兼容IE9+的方法示例
2019/02/20 Javascript
vue keep-alive 动态删除组件缓存的例子
2019/11/04 Javascript
Javascript中的this,bind和that使用实例
2019/12/05 Javascript
继承行为在 ES5 与 ES6 中的区别详解
2019/12/24 Javascript
[06:40]2014DOTA2西雅图国际邀请赛 DK战队巡礼
2014/07/07 DOTA
[02:15]你好,这就是DOTA!
2015/08/05 DOTA
python中文编码问题小结
2014/09/28 Python
跟老齐学Python之Python文档
2014/10/10 Python
python回溯法实现数组全排列输出实例分析
2015/03/17 Python
python读取视频流提取视频帧的两种方法
2020/10/22 Python
python之文件读取一行一行的方法
2018/07/12 Python
不到40行代码用Python实现一个简单的推荐系统
2019/05/10 Python
Python udp网络程序实现发送、接收数据功能示例
2019/12/09 Python
对python pandas中 inplace 参数的理解
2020/06/27 Python
HTML5拖放API实现拖放排序的实例代码
2017/05/11 HTML / CSS
葡萄牙鞋子品牌:Fair
2016/12/10 全球购物
元旦晚会上单位领导演讲稿
2014/01/05 职场文书
给老婆大人的检讨书
2014/02/24 职场文书
仓库保管员岗位职责
2015/02/09 职场文书
css布局巧妙技巧之css三角示例的运用
2022/03/16 HTML / CSS