我想使用递归函数来表示多边形链的以下演变(没有特定原因):
step 1. The chain starts with 2 line segments and is (of course) opened;
step 2. close the polygonal chain with a new line segment;
step 3. open the polygonal chain;
step 4. GOTO 2
我希望获得一个列表,其中包含"时间(步骤编号)","指示链的状态(打开/关闭)",& #34;线段数(边缘)"。我创建了以下脚本,但我犯的一个错误是没有停止条件。我感谢我的帖子的评论员。我想我解决了这个问题。下面我将尝试使用新脚本来回答我自己的问题。
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)
但事实上,输出是Error: C stack usage 7970888 is too close to the limit
。我做错了什么?
答案 0 :(得分:0)
表达欲望的演变 基于GonçaloM。Tavares,“O Sr. Swedenborg”中的“欲望” (葡萄牙语)link to book
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