用R语言写了一个函数,可以递归调用的。函数运行一次大概递归调用几十次,问题在于这个函数运行个几次(十次以内)就会出现一次这样的报错,不知道是因为什么,该如何修改?
(**错误: 节点堆叠上溢
收捲时出错: 节点堆叠上溢
Error: no more error handlers available (recursive errors?); invoking 'abort' restart**)
函数定义代码如下:
times<-function(n,k=0){
k<-k+1
result_n<-sample(1:3,n,TRUE)
result_1<-subset(result_n,result_n==1)
result_2<-subset(result_n,result_n==2)
result_3<-subset(result_n,result_n==3)
if(min(length(result_1),length(result_2),length(result_2))>0){
return(times(n,k))
} else if(max(length(result_1),length(result_2),
length(result_2))==n){
return(times(n,k))
} else if(length(result_1)==0){
if(length(result_2)==1) return(k) else return(times(length(result_2),k))
}else if(length(result_2)==0){
if(length(result_3)==1) return(k) else return(times(length(result_3),k))
}else if(length(result_3)==0){
if(length(result_1)==1) return(k) else return(times(length(result_1),k))
}
}