blob: 91ba84016406f4e84f24392d6650687eeb130099 [file] [log] [blame]
% File src/library/base/man/Recall.Rd
% Part of the R package, https://www.R-project.org
% Copyright 1995-2014 R Core Team
% Distributed under GPL 2 or later
\name{Recall}
\alias{Recall}
\title{Recursive Calling}
\usage{
Recall(\dots)
}
\arguments{
\item{\dots}{all the arguments to be passed.}
}
\description{
\code{Recall} is used as a placeholder for the name of the function
in which it is called. It allows the definition of recursive
functions which still work after being renamed, see example below.
}
\note{
\code{Recall} will not work correctly when passed as a function
argument, e.g.\sspace{}to the \code{apply} family of functions.
}
\seealso{
\code{\link{do.call}} and \code{\link{call}}.
\code{\link{local}} for another way to write anonymous recursive functions.
}
\examples{
## A trivial (but inefficient!) example:
fib <- function(n)
if(n<=2) { if(n>=0) 1 else 0 } else Recall(n-1) + Recall(n-2)
fibonacci <- fib; rm(fib)
## renaming wouldn't work without Recall
fibonacci(10) # 55
}
\keyword{programming}