以下简单递归在向量中查找重复的元素。它取自Thomas Mailund的第二章功能编程R:高级统计编程数据科学,分析和财务。我想知道为什么当我们在函数内部调用rest
时它会起作用,因为它在没有声明参数的情况下调用函数。
通常这只会返回函数定义,但在递归函数中我们不需要,我想知道为什么。
如果我们直接用rest
替换函数中的find_duplicates(x, i + 1)
,我可以看到这是如何工作的,但是我很难理解为什么它只调用函数附加的名称。< / p>
例如,如果我们定义f<- function (x) x
并致电f
,则只返回代码function (x) x
。
find_duplicates <- function(x, i = 1) {
if (i >= length(x)) return(c())
rest <- find_duplicates(x, i + 1)
if (x[i] == x[i + 1]) c(i, rest)
else rest
}
答案 0 :(得分:0)
rest
不是函数,它是函数find_duplicates
的输出,给定参数x
和i+1
。
所以确实在rest
子句中输入find_duplicates(x, i + 1)
或if
是一样的,它们都是值,而不是函数。