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 相关文章推荐
使用Grunt.js管理你项目的应用说明
Apr 24 Javascript
js函数定时器实现定时读取系统实时连接数
Apr 30 Javascript
JavaScript 事件绑定及深入
Apr 13 Javascript
node.js回调函数之阻塞调用与非阻塞调用
Nov 13 Javascript
学习JavaScript设计模式之代理模式
Jan 12 Javascript
限制文本框只能输入数字||只能是数字和小数点||只能是整数和浮点数
May 27 Javascript
angular动态表单制作
Feb 23 Javascript
详解JSON Web Token 入门教程
Jul 30 Javascript
小程序封装wx.request请求并创建接口管理文件的实现
Apr 29 Javascript
微信小程序实现Swiper轮播图效果
Nov 22 Javascript
javascript Canvas动态粒子连线
Jan 01 Javascript
Element Badge标记的使用方法
Jul 27 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
MySQL数据源表结构图示
2008/06/05 PHP
ioncube_loader_win_5.2.dll的错误解决方法
2015/01/04 PHP
PHP的Yii框架中创建视图和渲染视图的方法详解
2016/03/29 PHP
基于JQuery实现异步刷新的代码(转载)
2011/03/29 Javascript
jQuery实现checkbox全选的方法
2015/06/10 Javascript
纯jquery实现模仿淘宝购物车结算
2015/08/20 Javascript
浅谈window.onbeforeunload() 事件调用ajax
2016/06/29 Javascript
jQuery简单实现页面元素置顶时悬浮效果示例
2016/08/01 Javascript
在localStorage中存储对象数组并读取的方法
2016/09/24 Javascript
jquery ajaxfileupload异步上传插件使用详解
2017/02/08 Javascript
原生js实现简单的Ripple按钮实例代码
2017/03/24 Javascript
JavaScript实现父子dom同时绑定两个点击事件,一个用捕获,一个用冒泡时执行顺序的方法
2017/03/30 Javascript
webpack配置文件和常用配置项介绍
2017/04/28 Javascript
VueJS组件之间通过props交互及验证的方式
2017/09/04 Javascript
Thinkjs3新手入门之添加一个新的页面
2017/12/06 Javascript
vue中Npm run build 根据环境传递参数方法来打包不同域名
2018/03/29 Javascript
JavaScript变量Dom对象的所有属性
2020/04/30 Javascript
[03:40]2014DOTA2国际邀请赛 B神专访:躲箭真的很难
2014/07/13 DOTA
python处理csv数据动态显示曲线实例代码
2018/01/23 Python
Python3实现的字典、列表和json对象互转功能示例
2018/05/22 Python
Centos 升级到python3后pip 无法使用的解决方法
2018/06/12 Python
JavaScript中的模拟事件和自定义事件实例分析
2018/07/27 Python
python命名空间(namespace)简单介绍
2019/08/10 Python
python django生成迁移文件的实例
2019/08/31 Python
django框架forms组件用法实例详解
2019/12/10 Python
Python: 传递列表副本方式
2019/12/19 Python
Django admin 实现search_fields精确查询实例
2020/03/30 Python
matplotlib 对坐标的控制,加图例注释的操作
2020/04/17 Python
使用HTML5原生对话框元素并轻松创建模态框组件
2019/03/06 HTML / CSS
美国最好的保健品打折网店:Swanson
2017/08/04 全球购物
5.1手机促销活动
2014/01/17 职场文书
医学生临床实习自我评价
2014/03/07 职场文书
产品设计开发计划书
2014/05/07 职场文书
2015年人力资源工作总结
2015/04/08 职场文书
领导视察通讯稿
2015/07/18 职场文书
postgres之jsonb属性的使用操作
2021/06/23 PostgreSQL