关于fibonacci数列用JS写的一点小优化
直接上代码
 var month =  prompt("请输入月数:")
     function fibobo(x) {
         //先定义一个已有前两项的数组,用来作缓存
         var arr = [1, 1];
         (function fib(n) {
             if (n === 0 || n === 1) {
                 return 1;
             }
             //第一次执行n >= 2的值后,就往arr数组中添加 fib(n-1)+fib(n-2) 的值
             //即:如果arr数组中不包含  fib(n-1)+fib(n-2) 的值 ,就添加保存
             if (!arr[n]) {
                 arr.push(fib(n - 1) + fib(n - 2));
                 return arr[n];
             }
             //当arr数组中保存有 fib(n-1)+fib(n-2) 的值 ,就直接返回该值
             else {
                 return arr[n];
             }
         })(x);
         return arr[x - 1];
     }
     console.time('优化后方案')
     console.log(month+"个月后有"+fibobo(month)+"只兔子");
        console.timeEnd('优化后方案')
     function fib(n) {
         if (n<=2){
            return 1 ;
         }
         return fib(n -1 ) + fib(n - 2);
     }
     console.time('优化前方案')
      console.log(month+"个月后有"+fib(month)+"只兔子");
      console.timeEnd('优化前方案');
generator(生成器)是ES6标准引入的新的数据类型。一个generator看上去像一个函数,但可以返回多次。
generator由 function* 定义(注意多出的*号),并且,除了 return 语句,还可以用 yield 返回多次。
function* fib(max) {
    var
        t,
        a = 0,
        b = 1,
        n = 0;
    while (n < max) {
        yield a;
        [a, b] = [b, a + b];
        n ++;
    }
    return;
}
var f = []
for(var x of fib(200)){
    f.push(x)
}
console.log(f)
关于fibonacci数列用JS写的一点小优化的更多相关文章
- 原生JS写了一个小demo,根据输入的数字生成不同背景颜色的小方块儿~
		昨天练习写了这个小demo,个人觉得通过设置定位元素left和top的值,来实现换行的功能,这种方法很巧妙~ 另外,如下代码中的随机颜色的获取,还请各位前辈多多指教:需要改进的地方:或者有没有更好的方 ... 
- 关于js解析的一点小问题
		先来看一下下面的一段代码有什么问题? <html><head><script src="./jquery.min.js"></script ... 
- 原生js写的flybird小游戏
		游戏地址:http://zangzhihong.jusukeji.com/flybird/index.html html部分 <!DOCTYPE html> <!-- This ... 
- js调试的一点小知识
		1.如果想要js代码被XHTML和HTML解析,就可以使用如下方式 <script type="text/javascript"> //<![CDATA[ fun ... 
- 算法——js(Fibonacci数列)
		斐波那契数列(Fibonacci sequence),又称黄金分割数列,因数学家列昂纳多·斐波那契(Leonardoda Fibonacci[1] )以兔子繁殖为例子而引入,故又称为“兔子数列”,指 ... 
- 分享:计算机图形学期末作业!!利用WebGL的第三方库three.js写一个简单的网页版“我的世界小游戏”
		这几天一直在忙着期末考试,所以一直没有更新我的博客,今天刚把我的期末作业完成了,心情澎湃,所以晚上不管怎么样,我也要写一篇博客纪念一下我上课都没有听,还是通过强大的度娘完成了我的作业的经历.(当然作业 ... 
- wikioi 1973 Fibonacci数列【输出第N项的值】
		/*===================================== 1978 Fibonacci数列 3 题目描述 Description 斐波纳契数列是这样的数列: f1 = 1 f2 ... 
- 用PL0语言求Fibonacci数列前m个中偶数位的数
		程序说明:求Fibonacci数列前m个中偶数位的数: 这是编译原理作业,本打算写 求Fibonacci数列前m个数:写了半天,不会写,就放弃了: 程序代码如下: var n1,n2,m,i; pro ... 
- 程序员面试题精选100题(16)-O(logn)求Fibonacci数列[算法]
		作者:何海涛 出处:http://zhedahht.blog.163.com/ 题目:定义Fibonacci数列如下: / 0 n=0 f(n)= ... 
随机推荐
- Python3基础 使用clear() 清空一个字典
			镇场诗: 诚听如来语,顿舍世间名与利.愿做地藏徒,广演是经阎浮提. 愿尽吾所学,成就一良心博客.愿诸后来人,重现智慧清净体.-------------------------------------- ... 
- 一段神奇的代码-关于PHP字符变量奇怪现象的解释
			首先神奇的PHP是支持字符数据类型的,有同学就写了这样一段代码: for ($c = 'a'; $c <= 'z'; $c++) { echo $c . ' '; } 然而结果却不是他想要的a到 ... 
- window 2008+apache2.4.4+php5.5+mysql-5.6.12+phpmyadmin4.0.4.1安装过程(参考他人文章基础上加上自己遇到的问题)
			一.window server2008的安装 1.我用U盘安装的,先用UltraISO把server2008刻录到U盘中,过程我搜了一下,帖个地址: http://wenku.baidu.com/vi ... 
- 利用DIV+CSS制作网页过程中常用的基本概念及标签使用细节
			CSS主要用于对HTML文件功能的补充及扩展,其作用就是对HTML文件中各种排版进行设置,达到对网页中字体.颜色.背景.图片等的控制,使网页能够完全依照设计者的想法来显示. CSS可以控制网页的显示, ... 
- jQuery按键事件响应的Demo
			<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8&qu ... 
- Bootstrap入门(十五)组件9:面板组件
			Bootstrap入门(十五)组件9:面板组件 虽然不总是必须,但是某些时候你可能需要将某些 DOM 内容放到一个盒子里.对于这种情况,可以试试面板组件. 1.基本实例 2.带标题的面板 3.情景效果 ... 
- Eclipse安装git
			用Eclipse开发,如果需要团队协作,git作为分布式版本管理工具就是个比较好的选择.下面简单介绍一下git插件的安装方法: 1.Help -- install new software 打开插件安 ... 
- CF 752C. Santa Claus and Robot
			C. Santa Claus and Robot time limit per test 2 seconds memory limit per test 256 megabytes input sta ... 
- linux脚本: 后台启动程序并重定向输出信息脚本
			后台启动程序并重定向输出信息脚本 新建文件mstart, 写入下面代码. #!/bin/bash $1 1>/etc/null 2>&1 & 说明 1>/etc/nu ... 
- Salesforce的Auto Number
			在Salesforce中新建Object的时候,可以对Name选择Auto Number,即自动编号.如果没有仔细阅读说明的话,会有一个很容易让人迷惑的地方. 在选择时候,Salesforce提供的示 ... 
