假设我们有两个版本的递归函数,其中一个是尾递归函数。如果所使用的语言没有尾部调用优化,那么使用函数尾递归有什么好处吗?据我所知,在没有优化的情况下,函数的每个版本(尾部和非尾部)将使用相同数量的堆栈框架(在大多数情况下)。
我知道在某些情况下,例如Fibonacci函数,即使没有尾部调用优化,使用尾部调用也会更有效率,因为它避免了双重调用。但是,如果两个版本的函数都没有进行双重调用呢?尾递归函数还会更高效吗?
发布于 2021-03-01 05:28:51
这个问题的答案取决于硬件和语言实现。然而,在大多数情况下,我不得不认为一个简单的GOTO比CALL-RETURN指令对更快。
https://stackoverflow.com/questions/66413940
复制相似问题