R Tutorial R Charts & Graphs R Statistics R References

R - Recursive Function



A function which can call itself is known as recursive function. A recursive function generally ends with one or more boundary conditions which defines exit conditions from the function, otherwise it will go into an infinite loop.

Example: Factorial of a number

The factorial of a positive integer is the multiplication of all positive integer less than or equal to that number.

factorial of number n = n! = n(n-1)(n-2)...1

In the example below, a recursive function called factorial() is used to calculate factorial of a number.

factorial <- function(x) {
  if(x %% 1 == 0 && x >= 0){
    if(x > 0)
      return <- x*factorial(x-1)
    else
      return <- 1  
  } else {
    return <- "Number should be positive integer." 
  }
}

cat("3! =", factorial(3), "\n")
cat("5! =", factorial(5), "\n")
cat("10! =", factorial(10), "\n")

The output of the above code will be:

3! =  6 
5! =  120 
10! =  3628800 

Example: Fibonacci Sequence

Fibonacci terms are generally represented as Fn. A Fibonacci term is the sum of two previous terms and starts with 0 and 1. Mathematically, it can be represented as:

Fn = Fn-1 + Fn-2

With boundary conditions: F0 = 0 and F1 = 1

The Fibonacci Sequence: 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233...

In the example below, a recursive function called fib() is created to find out the nth term of Fibonacci sequence.

fib <- function(x) {
  if(x == 0){
    return <- 0
  } else if (x == 1) {
    return <- 1
  } else {
    return <- fib(x-1) + fib(x-2)
  }
}

cat("Fibonacci 5th term:", fib(5), "\n")
cat("Fibonacci 6th term:", fib(6), "\n")
cat("Fibonacci 7th term:", fib(7), "\n")

The above code will give the following output:

Fibonacci 5th term: 5
Fibonacci 6th term: 8
Fibonacci 7th term: 13

❮ R - Functions