没有尾调用优化的尾递归

时间:2021-02-28 21:21:03

标签: recursion optimization tail-recursion

假设我们有两个版本的递归函数,其中一个是尾递归的。如果所使用的语言没有尾调用优化,使用尾递归函数是否有任何好处?根据我的理解,如果没有优化,函数的每个版本(尾部和非尾部)将使用相同数量的堆栈帧(在大多数情况下)。

我知道在某些情况下,例如斐波那契函数,即使没有尾调用优化,使用尾调用也可以更有效,因为它避免了双重调用。但是如果函数的两个版本都没有进行两次调用呢?尾递归函数会更高效吗?

1 个答案:

答案 0 :(得分:0)

该问题的答案取决于硬件和语言实现。但是,在大多数情况下,我不得不认为简单的 GOTOCALL-RETURN 指令对快。

相关问题