【问题标题】:How can I define a sequence of recursive functions?如何定义一系列递归函数?
【发布时间】:2020-09-27 22:31:41
【问题描述】:

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

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

【问题讨论】:

    标签: r function recursion


    【解决方案1】:

    不要递归地定义一组函数,而是定义一个递归函数:

    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]] 的那一刻i 等于 2。

    【讨论】:

      猜你喜欢
      • 2019-09-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-03-27
      • 2023-04-01
      • 2012-04-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多