Lisp中的递归与迭代

时间:2016-07-10 16:43:30

标签: lisp

在此站点http://jatha.sourceforge.net/,快速功能的示例是通过递归。是否递归通常比Lisp中的迭代更快且性能更好?

编辑:Lisp是否比其他语言更优化递归?

2 个答案:

答案 0 :(得分:3)

这实际上取决于你所说的“Lisp”和“递归”。

Scheme 强制执行 tail call optimization,但除此之外,您将受到实施(以及您的optimization settings)的支配

例如,如果debug设置高于speed设置,则Lisp实现可能会使递归调用保持未优化状态,以便跟踪更有意义。 有关详细信息,请参阅实施手册。

然而,这里的关键点是(SICP):

  

......计算机语言不仅仅是获取计算机的一种方式     执行操作,而是......它是一种新颖的正式媒介     表达对方法论的看法

IOW,你为人们编写代码,让他们阅读更多信息,以便计算机执行,所以你需要在如何清楚表达你的算法方面考虑更多,而不是如何编译和执行它。

答案 1 :(得分:2)

这取决于算法;有些人会更好地利用递归通常会产生的开销,使得它们比迭代对应物更快。

但是,通常,算法本身会产生最大的差异,而不是这个特定的实现细节。