我见过这些问题:
这些都提到了尾部调用优化。我想知道,如果给定一个如下所示的函数,它可以自动“平移”它从递归到迭代,使用除尾调用优化之外的东西(我不认为在这种情况下适用,我我不想放置这个限制。)
a() {
while x < 3 {
b()
}
}
b() {
c()
}
c() {
d()
}
d() {
a()
}
注意d
调用a
并开始递归,但假设它不会永远递归,只有几个级别(这只是伪代码)。这与fibonacci示例不同,后者只有1个递归调用自身的函数。我想知道是否已经就将这类复杂递归函数自动转换为迭代函数的主题进行了研究。