文档章节

斐波那契数在javascript中的另一种算法

f
 fymoon
发布于 2016/11/17 00:10
字数 266
阅读 7
收藏 0

今天晚上,闲来无事,就去翻看了一下javascript经典实例,看到其中利用javascript对斐波那契数的计算

console.time('demo');
var fib = function (n) {
  return n<2?n:fib(n-1)+fib(n-2);
}
console.log(fib(40));
console.timeEnd('demo');
//102334155
//demo: 1665.563ms

下面就是结果,感觉这性能确实比较差劲,书上利用了缓存计算来提升性能,性能提升较明显,但还是未达到极致

后来自己就想到对上一个算法换一种思路,性能应该会得到较大提升,这是个人试验的例子

console.time('demo');
function num(ele) {
  var temp=[];
for (let i=0;i<=ele;i++){
  if (i>1){

    temp[i]=temp[i-1]+temp[i-2];
  }
  else{
    temp[i]=i;
  }
}
return temp[ele];
}
console.log(num(1100));
console.timeEnd('demo');
//node上跑出的结果:  3.4428592852410256e+229
//             demo: 3.119ms

//chrome上跑出的结果 3.4428592852410256e+229
//                 demo: 0.607ms

node和chrome跑同一个程序耗时差距极其明显,个人感觉目前6.9版本node的性能远未达到其瓶颈,未来node仍有很大的发展空间

 

© 著作权归作者所有

f
粉丝 0
博文 34
码字总数 33302
作品 0
武汉
程序员
私信 提问
太原面经分享:如何用js实现返回斐波那契数列的第n个值的函数

面试攒经验,let's go! 值此高考来临之际,闲不住的我又双叒叕出发去面试攒经验了,去了公司交待一番流程后,面试官甩给了我一张A4纸,上面写着一道js算法笔试题(一开始我并不知道这是在考...

闰土大叔
2018/06/07
0
0
js算法初窥04(算法模式01-递归)

  终于来到了有点意思的地方——递归,在我最开始学习js的时候,基础课程的内容就包括递归,但是当时并不知道递归的真正意义和用处。我只是知道,哦...递归是自身调用自身,递归要记得有一...

zaking
2018/05/22
0
0
JavaScript专题之递归

JavaScript 专题系列第十八篇,讲解递归和尾递归 定义 程序调用自身的编程技巧称为递归(recursion)。 阶乘 以阶乘为例: 示意图(图片来自 wwww.penjee.com): 斐波那契数列 在《JavaScript专...

冴羽
2017/09/13
0
0
JS专题之memoization

前言 在计算机领域,记忆(memoization)是主要用于加速程序计算的一种优化技术,它使得函数避免重复演算之前已被处理过的输入,而返回已缓存的结果。 -- wikipedia 的原理就是把函数的每次执...

南波
02/08
0
0
在Node.js中使用C++模块

对程序员来说,确实是我们作为服务端开发的首选语言。的性能优势源于其使用的,使用非阻塞式的,依靠事件驱动。但涉及密集型计算的场景时,不一定能够有很优秀的表现。还好有C++ Addons的机制...

counterxing
2018/10/29
0
0

没有更多内容

加载失败,请刷新页面

加载更多

思维导图XMind 8 Pro 绿化方法(附序列号)

按部就班: Step 1 -全新下载最新版本的 Xmind 8(注必须是英文官方的版本,中文代{过}{滤}理网站的版本修改过,无法使用pj); Step 2 -安装完毕后,点击文末的下载按钮下载pj补丁文件包,将...

一只小青蛙
17分钟前
0
0
数据结构(ER数据库)设计规范

表命名规范 表命名的规则分为3个层级,层级之间通过_分割,例如b_r_identity、d_l_identity。规约为: [leavel]_[type]_[name] [leavel] 表示数据库表的层级和功能,分为: s:业务无关的系统...

随风溜达的向日葵
41分钟前
1
0
阿里Sentinel控制台源码修改-对接Apollo规则持久化

https://github.com/alibaba/Sentinel/wiki/%E5%9C%A8%E7%94%9F%E4%BA%A7%E7%8E%AF%E5%A2%83%E4%B8%AD%E4%BD%BF%E7%94%A8-Sentinel 动态规则扩展 https://github.com/alibaba/Sentinel/wiki......

jxlgzwh
昨天
3
0
在Linux系统中创建SSH服务器别名

如果你经常通过 SSH 访问许多不同的远程系统,这个技巧将为你节省一些时间。你可以通过 SSH 为频繁访问的系统创建 SSH 别名,这样你就不必记住所有不同的用户名、主机名、SSH 端口号和 IP 地...

老孟的Linux私房菜
昨天
5
0
高德API入门教程

项目需求 1、实现打开地图就能定位到中心显示标注点 2、点击标注显示保利可爱岛的详细信息 3、实现导航功能 <!doctype html><html><head> <meta charset="utf-8"> <meta http-......

我叫小糖主
昨天
10
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部