r语言 - 如何定义递归函数序列?



我试图定义以下函数,但失败了。欢迎任何建议。

H = list()
H[[1]] = function(x) 1
for(i in 2:4) H[[i]] = function(x) H[[i-1]](x)*x+1
> H
[[1]]
function (x) 
1
[[2]]
function (x) 
H[[i - 1]](x) * x + 1
[[3]]
function (x) 
H[[i - 1]](x) * x + 1
[[4]]
function (x) 
H[[i - 1]](x) * x + 1
> H[[1]](1)
1  
> H[[2]](1)
Too Deep Nesting

与其递归定义一组函数,不如定义单个递归函数:

H <- function(x, n) {
if (n == 1) 1 else H(x, n-1) * x + 1
} 

然后,H(x, n)返回与您的H[[n]](x)相同的内容。

为了完整起见:使用 for 循环的方法不起作用,因为每个函数都依赖于在生成函数时分配给i的特定值。 在循环结束时,i设置为4。调用H[[2]](10)时,R 会尝试计算以无限递归结束的H[[i-1]](10) * 10 + 1 = H[[3]](10) * 3 + 1 = ...。 简单地说,R 不记得在 H[[2]] 被定义为等于 2i的那一刻。

最新更新