Optimization 什么是尾部递归优化?

Optimization 什么是尾部递归优化?,optimization,recursion,Optimization,Recursion,可能重复: 什么是尾部递归优化?a调用b调用c调用d 最后你有尾巴: d返回c返回b返回a。如果所有这些都不起作用(比如在递归中,它实际上是a调用a调用a),那么您可以优化它。。。 …into d返回a.在中,Crockford说,“一些语言提供了尾部递归优化。这意味着如果函数返回递归调用自身的结果,那么调用将被一个循环所取代,这可以显著加快速度。”尾部递归并不意味着将递归调用转换为循环 这意味着在递归调用时不再需要堆栈帧,因此可以消除堆栈帧。如果递归调用是方法中的最后一条语句,并且递归调用的

可能重复:


什么是尾部递归优化?

a调用b调用c调用d

最后你有尾巴:

d返回c返回b返回a。如果所有这些都不起作用(比如在递归中,它实际上是a调用a调用a),那么您可以优化它。。。
…into d返回a.

在中,Crockford说,“一些语言提供了尾部递归优化。这意味着如果函数返回递归调用自身的结果,那么调用将被一个循环所取代,这可以显著加快速度。”尾部递归并不意味着将递归调用转换为循环

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

这种优化通常是由编译器/解释器而不是程序员进行的。

您读过的答案了吗?