算法

时间复杂度

常见的时间复杂度有:常数阶O(1),对数阶O(log2n),线性阶O(n), 线性对数阶O(nlog2n),平方阶O(n2),立方阶O(n3),…, k次方阶O(nk),指数阶O(2n)。

JavaScript学习笔记之 斐波那契数列尾调用测试

为了验证JavaScript中尾调用的优点,所以做了计算斐波那契数列的尾调用写法和非尾调用写法的性能对比,结果是惊人的,真是不试不知道,一试吓一跳。

这里我都是循环计算斐波那契数列第1-40位的数值,下面是各个环境的验证结果:
Firefox: 普通写法:1000-1300 ms,尾调用写法:0-2 ms
Chrome: 普通写法:1550-1700 ms,尾调用写法:0-2 ms
IE9: 普通写法:46000+ ms,尾调用写法:0-2 ms

以上只是在我自己电脑上的3种浏览器测试的结果,但是可以看出其巨大的差异,所以多函数嵌套调用以及递归时,尽可能的使用尾调用。测试地址