尾部调用优化是否适用于除递归调用以外的其他调用?

犬蠕虫

请帮助纠正我的理解,即尾调用优化仅适用于递归调用。令我感到困惑的是,该术语只是“尾调用优化”,而不是“递归尾调用优化”。

还是该术语所指的一般情况下,针对尾部调用发生了其他优化?

什么

那将依赖于实现,并且依赖于编译器-但事实是,它可以用于任何尾部调用,而不仅仅是递归调用。

内联方法可以很容易地对任何递归调用进行,即使不是方法本身。

这样做的一个特殊好处是可以进行相互递归调用:

f(n):
   //some code
   g(n)
g(n):
   //some more code
   f(n-1)

问题是“什么以及如何优化”,我们是否应该“取消” g,并使f递归?

幸运的是,这个问题相对简单,并且可以通过简单的图形算法解决,这要归功于以下事实:如果每种方法都是一个节点-它最多具有一个输出边缘(单尾调用)。这意味着该图实际上是一系列链,在“最坏情况”下形成一个简单的循环(每个连接的组件中的单个循环),该循环很容易处理。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

尾部调用优化是否适用于此功能?

Java是否支持并优化尾部递归调用?

AllowAnyMethod适用于某些API调用,但不适用于其他API调用

Go递归函数调用是否优化了尾部?

“ for”属性适用于除标签以外的其他标签

JVM是否阻止尾部调用优化?

Swift是否实现尾部调用优化?在相互递归的情况下?

块的保留周期是否适用于块调用的方法?

互斥锁是否适用于锁定后调用的函数?

JavaScript尾部调用中的函数是否已优化?

Java 8是否具有尾部调用优化功能?

是否对JavaScript引擎尾部调用(TCO)进行了优化?

尾调用递归“优化”

Jquery 不适用于循环调用

映射不适用于api调用

触摸屏是否适用于鼠标以外的其他功能?

如何记录返回函数调用的函数(用于优化尾部调用)

Javascript引擎中的尾部调用优化实现

Windows系统调用以打开/关闭其他exe文件

window.getComputedStyle不适用于除Chrome以外的其他浏览器的速记属性

递归调用不在尾部位置

简单的尾调用优化,用于递归的while循环样式函数

使用某些参数调用命令有效,但不适用于其他参数,但可以从控制台使用

如何使用传递给当前子程序的参数(用于递归)调用其他子程序?

SmtpClient.Timeout 属性是否适用于异步调用?

严格混叠规则是否适用于函数调用?

优化调用以进行变异和汇总?

编译器是否可以优化递归调用?

函数调用是否与%rax以外的其他寄存器混淆?