簡體   English   中英

如何定義一系列遞歸函數?

[英]How can I define a sequence of recursive functions?

我試圖定義以下 function 但失敗了。 任何建議都將受到歡迎。

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

與其遞歸定義一組函數,不如定義一個遞歸 function:

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

然后, H(x, n)返回與您的H[[n]](x)相同的結果。

為了完整起見:您使用 for 循環的方法不起作用,因為每個 function 取決於在生成 function 時分配給i的特定值。 在循環結束時i設置為4 當您調用H[[2]](10) R 嘗試計算H[[i-1]](10) * 10 + 1 = H[[3]](10) * 3 + 1 =...以無限遞歸結束。 簡單地說,R 不記得在定義 H[[2]] 時i等於 2。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM