R统计环境的尾递归

Pau*_*lho 16 recursion functional-programming tail-recursion r

R是否支持正确的尾递归,哪里可以找到关于此的文档?

Fre*_*Foo 18

很容易发现R不支持尾递归优化:

f <- function(n) {
if (n != 0) f(n-1)
}
f(100000)
# Error: evaluation nested too deeply: infinite recursion / options(expressions=)?
Run Code Online (Sandbox Code Playgroud)

如果尾部调用被优化为跳转,则此函数将终止而没有问题.


G. *_*eck 6

不,R不支持尾递归.


duf*_*ymo 6

这个参考资料很容易与谷歌一起发现,表明R不支持尾递归并解释了原因.

  • “正确的”尾递归我指的是“尾调用优化/消除”。考虑到 R 是一个完整的统计包,具有真正的闭包和一些面向对象的特性,更符合函数式编程(作为“泛型函数”和这个“泛型函数”的类)而不是“传统”命令式语言,这似乎很奇怪,因为我,它不支持尾调用消除。无论如何,我将避免使用递归,我将使用循环。没问题,完全没有问题。 (2认同)