R递归函数调用,无需声明函数参数

问题描述 投票:0回答:1

以下简单递归在向量中查找重复元素。它来自Thomas Mailund的R:高级统计编程数据科学,分析和财务中的第2章功能编程。我想知道为什么它在我们在函数内部调用rest时有效,因为它调用函数时没有声明参数。

通常这只会返回函数定义,但在递归函数中我们不需要,我想知道为什么。

如果我们直接用rest替换函数中的find_duplicates(x, i + 1),我可以看到它是如何工作的,但是我很难理解它为什么只调用函数附加的名称。

例如,如果我们定义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
}
r recursion arguments call
1个回答
0
投票

rest不是一个函数,它是函数find_duplicates的输出给出参数xi+1

确实,在rest条款中键入find_duplicates(x, i + 1)if也是一样的,它们既是价值,也是功能。

© www.soinside.com 2019 - 2024. All rights reserved.