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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了R递归函数调用,无需声明函数参数相关的知识,希望对你有一定的参考价值。

以下简单递归在向量中查找重复元素。它来自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
}
答案

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

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

以上是关于R递归函数调用,无需声明函数参数的主要内容,如果未能解决你的问题,请参考以下文章

文法分析与递归下降分析

JavaScript-函数(调用参数returnarguments匿名回调递归函数)函数案例

C语言函数

Python函数

C语言学习笔记函数

python函数声明和调用(18)