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 相关文章推荐
在IE6下发生Internet Explorer cannot open the Internet site错误
Jun 21 Javascript
jQuery 设置 CSS 属性示例介绍
Jan 16 Javascript
分享一则javascript 调试技巧
Jan 02 Javascript
AngularJS入门示例之Hello World详解
Jan 04 Javascript
js实现文字无缝向上滚动
Feb 16 Javascript
微信小程序 出现错误:{&quot;baseresponse&quot;:{&quot;errcode&quot;:-80002,&quot;errmsg&quot;:&quot;&quot;}}解决办法
Feb 23 Javascript
js中作用域的实例解析
Mar 16 Javascript
js中bool值的转换及“&amp;&amp;”、“||”、 “!!”详解
Dec 21 Javascript
讲解vue-router之命名路由和命名视图
May 28 Javascript
Bootstrap Fileinput 4.4.7文件上传实例详解
Jul 25 Javascript
Vue异步组件处理路由组件加载状态的解决方案
Sep 07 Javascript
Vue-router 报错NavigationDuplicated的解决方法
Mar 31 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在不同页面间传递Json数据示例代码
2013/06/08 PHP
php发送post请求的三种方法
2014/02/11 PHP
PHP图片处理之图片旋转和图片翻转实例
2014/11/19 PHP
php+jQuery+Ajax简单实现页面异步刷新
2016/08/08 PHP
获取焦点时,利用js定时器设定时间执行动作
2010/04/02 Javascript
jqGrid jQuery 表格插件测试代码
2011/08/23 Javascript
JS操作Cookies的小例子
2013/10/15 Javascript
php析构函数的具体用法小结
2014/03/11 Javascript
JavaScript声明变量时为什么要加var关键字
2014/09/29 Javascript
JS打字效果的动态菜单代码分享
2015/08/21 Javascript
JavaScript设计模式经典之命令模式
2016/02/24 Javascript
Vue.2.0.5实现Class 与 Style 绑定的实例
2017/06/20 Javascript
ES6 javascript中class静态方法、属性与实例属性用法示例
2017/10/30 Javascript
Ionic学习日记实现验证码倒计时
2018/02/08 Javascript
Vue中Table组件Select的勾选和取消勾选事件详解
2019/03/19 Javascript
Vue 2.0 侦听器 watch属性代码详解
2019/06/19 Javascript
js简单实现自动生成表格功能示例
2020/06/02 Javascript
jQuery实现动态加载瀑布流
2020/09/01 jQuery
Python搭建APNS苹果推送通知推送服务的相关模块使用指南
2016/06/02 Python
基于Python List的赋值方法
2018/06/23 Python
python将秒数转化为时间格式的实例
2018/09/16 Python
Django框架实现分页显示内容的方法详解
2019/05/10 Python
微信小程序python用户认证的实现
2019/07/29 Python
Pycharm 设置默认解释器路径和编码格式的操作
2021/02/05 Python
英国时尚泳装品牌:Maru Swimwear
2019/10/06 全球购物
J2EE相关知识面试题
2013/08/26 面试题
生日派对邀请函
2014/01/13 职场文书
电焊工工作岗位职责
2014/02/06 职场文书
《赵州桥》教学反思
2014/02/17 职场文书
《小松树和大松树》教学反思
2014/02/20 职场文书
《少年王勃》教学反思
2014/04/27 职场文书
安全技术说明书
2014/05/09 职场文书
领导干部遵守党的政治纪律情况思想汇报
2014/09/14 职场文书
认错检讨书
2014/10/02 职场文书
《百分数的认识》教学反思
2016/02/19 职场文书
导游词之宿迁乾隆行宫
2019/10/15 职场文书