Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/sharepoint/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在R中编写以列表作为输入和输出的递归函数_R_Recursion - Fatal编程技术网

如何在R中编写以列表作为输入和输出的递归函数

如何在R中编写以列表作为输入和输出的递归函数,r,recursion,R,Recursion,我想用一个递归函数来表示多边形链的以下演变(没有特别的原因): 因此,我希望获得一个包含“时间(步数)”、“链状态指示(打开/关闭)”、“线段数(边)”的列表。我创建了以下脚本,但我犯的错误之一是没有停止条件。我感谢我这篇文章的评论员。我想我解决了这个问题。下面我将尝试用一个新的脚本来回答我自己的问题 recursive.d <- function(d){ t <- d[[1]] a <- d[[2]] k <- d[[3]] a <- !a

我想用一个递归函数来表示多边形链的以下演变(没有特别的原因):

因此,我希望获得一个包含“时间(步数)”、“链状态指示(打开/关闭)”、“线段数(边)”的列表。我创建了以下脚本,但我犯的错误之一是没有停止条件。我感谢我这篇文章的评论员。我想我解决了这个问题。下面我将尝试用一个新的脚本来回答我自己的问题

recursive.d <- function(d){
  t <- d[[1]]
  a <- d[[2]]
  k <- d[[3]]
  a <- !a  
  t <- t + 1
  k <- ifelse(a, k + 1, k)
  d <- list(t, a, k)
  d <- rbind(d[], recursive.d(d[]))
  return (d)
}

d_ini <- list(0, TRUE, 2)
recursive.d(d_ini)

recursive.d欲望进化的表征
根据Gonçalo M.Tavares的作品,《老斯维登堡》中的“欲望”
(葡萄牙语)


1) 为什么需要递归?2) 代码中的停止条件是什么/在哪里?3) 你能描述一下你想要做什么吗?你的代码没有任何意义,没有基本情况。我需要递归,因为我想在这种特殊情况下使用它。不是出于实际原因,也不是为了取得一定的成果;2) 我没有停止条件。我尝试使用k==5作为停止,但函数只返回5;3) 这段代码没有意义,因为它的形式非常抽象,带有字母。我试图生成一个列表,其中第一个成员计算时间(1,2,3,…),第二个成员在TRUE或FALSE之间波动,第三个成员计算一个取决于列表中其他两个成员的数字。但是如果我返回(recursive.d)如果你的兴趣是哲学的,那么我建议在这里发布:如果你有一个实际的用例,那么描述一下,我们会尽力帮助你。否则我认为这应该关闭。。。。那么您只想生成数据的前十个元素?可以很容易地将要生成的元素数作为参数包含在函数中。是的,这些只是前十个元素。我将停止条件设置为
t==10
。我想我解决了这个问题。现在我想用一系列开放/闭合多边形来表示它。对不起,我没有注意到你关于元素数作为参数的观察。好主意!我试图用R:-)来描述一篇文学作品
recursive.d <- function(d){
  t <- d[[1]]
  a <- d[[2]]
  k <- d[[3]]
  a <- !a  
  t <- t + 1
  k <- ifelse(a, k + 1, k)
  d <- list(t, a, k)
  d <- rbind(d[], recursive.d(d[]))
  return (d)
}

d_ini <- list(0, TRUE, 2)
recursive.d(d_ini)
recursive.d <- function(d){
  t <- d[[1]] # time
  a <- d[[2]] # desire true/false
  k <- d[[3]] # edges
  k <- ifelse(a, k + 1, k)
  a <- !a  
  d <- list(t+1, a, k)
  if (t == 10) return(NA) # stop condition
  else
  d <- rbind(d[], recursive.d(d[]))
  return (d)
}

d_ini <- list(1, TRUE, 2)
desire <- rbind(d_ini, recursive.d(d_ini))
colnames(desire) <- c("Time", "Desire", "Edges")
desire
  Time Desire Edges
d_ini 1    TRUE   2    
      2    FALSE  3    
      3    TRUE   3    
      4    FALSE  4    
      5    TRUE   4    
      6    FALSE  5    
      7    TRUE   5    
      8    FALSE  6    
      9    TRUE   6    
      10   FALSE  7    
      NA   NA     NA