16

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

4

3 回答 3

18

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

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

如果尾调用针对跳转进行了优化,那么该函数将毫无问题地终止。

于 2012-11-03T12:06:13.013 回答
6

不,R 不支持尾递归。

于 2012-11-03T12:04:36.717 回答
6

这个参考,很容易在谷歌上找到,表明 R 不支持尾递归并解释了原因。

于 2012-11-03T12:04:50.567 回答