如何解决没有尾调用优化的尾递归
假设我们有两个版本的递归函数,其中一个是尾递归的。如果所使用的语言没有尾调用优化,使用尾递归函数是否有任何好处?根据我的理解,如果没有优化,函数的每个版本(尾部和非尾部)将使用相同数量的堆栈帧(在大多数情况下)。
我知道在某些情况下,例如斐波那契函数,即使没有尾调用优化,使用尾调用也可以更有效,因为它避免了双重调用。但是如果函数的两个版本都没有进行两次调用呢?尾递归函数会更高效吗?
解决方法
该问题的答案取决于硬件和语言实现。但是,在大多数情况下,我不得不认为简单的 GOTO
比 CALL
-RETURN
指令对快。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。