【发布时间】:2021-10-18 19:38:23
【问题描述】:
我有一个递归调用自身的函数:
myfunc <- function(id) {
new_id <- id - 1
print(id)
if(new_id > 0) {
myfunc(new_id)
}
return(0)
}
如果我用 2 调用它,我们得到
> myfunc(2)
[1] 2
[1] 1
[1] 0
正如预期的那样,但实际上我想以某种方式保存打印的中间值并在最后将它们作为向量返回:
[1] 2 1 0
我试过这个:
v_id <- NULL
myfunc <- function(id) {
new_id <- id - 1
if(new_id > 0) {
v_id <- c(v_id, id)
myfunc(new_id)
} else {
return(v_id)
}
}
但它只返回 null。
我觉得这可以使用环境来解决,但我完全不知道该怎么做。
如何保存递归函数调用的中间结果,并在最后返回它们?或者是否有更好的方法来实现我想要的?
谢谢
【问题讨论】:
-
那么你真的需要递归函数吗?你只想反转输出吗?
-
@user2974951 我需要一个递归函数。实际用例更复杂,这只是一个 mwe。
标签: r