《计算机程序的构造和解释》读书笔记之斐波那契数列

《计算机程序的构造和解释》读书笔记之斐波那契数列斐波那契数列作为树形递归的例子,本书指出了缺点:虽然它是树形递归的经典范例,但是用递归求斐波那契数是很烂的方法。因为产生了过多的冗余的计算。(请见译书第25页)

TopLanguage组的Li Yang言:在阅读《代码大全》的递归一节的CODING HORROR那段,作者强调不要用递归去计算阶乘或者斐波那契数列,因为这种用法速度缓慢,而且内存使用无法预测,且可读性差。

在TopLanguage组中本人只潜水,而本人在实际情况中,IronScheme解释器、JavaScript控制台、C# 2005 编译器进行了试验。试验的过程是将斐波那契数测试,测试的数值越来越大。

结果:JavaScript控制台最先出局,IronScheme 解释器比 C# 2005 编译器慢,这是没办法的--编译比解释要快,而不是尾递归这个“优化编译”的原因。

下面是用JavaScript语言编写的斐波那契数列的程序:

var fib = function(n) {

    if (n == 0) return 0;

    if (n == 1) return 1;

    else {

        return arguments.callee(n - 1) + arguments.callee(n - 2);

    }

}

var fibObj = fib(7);

console.log(fibObj);

你可能感兴趣的:(读书笔记)