R Recursive Function

A function that calls itself is called a recursive function and this technique is known as recursion.

This special programming technique can be used to solve problems by breaking them into smaller and simpler sub-problems.

An example can help clarify this concept:

Let us take the example of finding the factorial of a number. Factorial of a positive integer number is defined as the product of all the integers from 1 to that number. For example, the factorial of 5 (denoted as 5!) will be

5! = 1*2*3*4*5 = 120

This problem of finding factorial of 5 can be broken down into a sub-problem of multiplying the factorial of 4 with 5.

5! = 5*4!

Or more generally,

n! = n*(n-1)!

Now we can continue this until we reach 0! which is 1.

The implementation of this is provided below.


Example: Recursive Function in R

# Recursive function to find factorial

recursive.factorial <- function(x) {
   if (x == 0)    return (1)
   else           return (x * recursive.factorial(x-1))
}

Here, we have a function which will call itself. Something like recursive.factorial(x) will turn into x * recursive.factorial(x) until x becomes equal to 0.

When x becomes 0, we return 1 since the factorial of 0 is 1. This is the terminating condition and is very important.

Without this the recursion will not end and continue indefinitely (in theory). Here are some sample function calls to our function.

> recursive.factorial(0)
[1] 1

> recursive.factorial(5)
[1] 120

> recursive.factorial(7)
[1] 5040

The use of recursion, often, makes code shorter and looks clean.

However, it is sometimes hard to follow through the code logic. It might be hard to think of a problem in a recursive way.

Recursive functions are also memory intensive, since it can result into a lot of nested function calls. This must be kept in mind when using it for solving big problems.

Did you find this article helpful?

Our premium learning platform, created with over a decade of experience and thousands of feedbacks.

Learn and improve your coding skills like never before.

Try Programiz PRO
  • Interactive Courses
  • Certificates
  • AI Help
  • 2000+ Challenges