我有一个递归函数,它使用前一个调用的输出作为下一个调用的输入:
recurse_foo = function(input) {
if(identical(input, character(0))) return(NULL)
else {
uu = get_incremental_output(input) ## <-- interested in collecting this
return(recurse_foo(uu))
}
}
很明显,终端输出不是很有趣,我有兴趣收集中间输出,但我无法想象增长全局列表或任何其他副作用将是优雅的(这是我唯一能做的事情想到)。
这里可能有用的任何其他抽象?
感谢。
具体示例:
final_countdown = function(input) {
if (input/2 < 1) return(NULL)
else {
uu = input/2 # <-- interested in collecting this
print(uu)
return(final_countdown(uu))
}
}
final_countdown(100)
在这种情况下,我有兴趣收集uu
编辑print
的序列。
答案 0 :(得分:1)
如果所有中间输出的类型相同,则这是一个解决方案:
final_countdown = function(input) {
if (input/2 < 1) return(NA)
else {
c(input, final_countdown(input/2))
}
}