什么是尾递归优化?

可能重复:
什么是尾递归?

什么是尾递归优化?


a呼叫b呼叫c呼叫d。

最后你有尾巴:

d返回到c返回到b返回到a。 如果所有这些什么都不做(就像在递归中,它实际上是一个调用一个调用一个调用),那么你可以优化那个......到d返回一个。


尾递归并不意味着您将递归调用转换为循环。

这意味着在递归调用时不再需要堆栈帧,因此可能会被淘汰。 如果recurisive调用是方法中的最后一个语句,并且递归调用的返回值是当前方法的返回值,则会发生这种情况。 通过消除当前的堆栈帧,递归调用可以达到任意深度,不会出现堆栈溢出错误,并可大量节省资源。

这种优化通常由编译器/解释器而不是程序员来完成。


在JavaScript中:好的部分,Crockford说:“有些语言提供了尾递归优化,这意味着如果一个函数返回递归调用的结果,那么调用被循环替换,这可以显着提高速度。”

链接地址: http://www.djcxy.com/p/14161.html

上一篇: What is tail recursion optimization?

下一篇: The difference between head & tail recursion