在此站点http://jatha.sourceforge.net/,快速功能的示例是通过递归。是否递归通常比Lisp中的迭代更快且性能更好?
编辑:Lisp是否比其他语言更优化递归?
答案 0 :(得分:3)
这实际上取决于你所说的“Lisp”和“递归”。
Scheme 强制执行 tail call optimization,但除此之外,您将受到实施(以及您的optimization settings)的支配
例如,如果debug
设置高于speed
设置,则Lisp实现可能会使递归调用保持未优化状态,以便跟踪更有意义。
有关详细信息,请参阅实施手册。
然而,这里的关键点是(SICP):
......计算机语言不仅仅是获取计算机的一种方式 执行操作,而是......它是一种新颖的正式媒介 表达对方法论的看法
IOW,你为人们编写代码,让他们阅读更多信息,以便计算机执行,所以你需要在如何清楚表达你的算法方面考虑更多,而不是如何编译和执行它。
答案 1 :(得分:2)
这取决于算法;有些人会更好地利用递归通常会产生的开销,使得它们比迭代对应物更快。
但是,通常,算法本身会产生最大的差异,而不是这个特定的实现细节。