
Home 

In this tutorial you will learn what is recursion and how to create a recursive function in R programming.
Recursion is the process in which a function calls itself from its body depending on some condition. If there is no condition given for the call of function, an infinite loop will start hence a logical condition must be given.
A function that calls (from within its body) itself is called recursive function. The main aim is to divide and conquer. Making complex problems to simpler ones. Recursion usually replaces loops in your code and makes your code more readable and brings clarity.The idea of recursion is explained here with the help of a recursive function applied for finding factorial of a number.
Now first question is what is factorial?
Factorial of a given positive integer is defined as the product of all integers from 1 to that specific number. So the factorials of first five positive integers can be calculated as follows:
1! = 1
2! = 1 * 2 = 2
3! = 1 * 2 * 3 = 6
4! = 1 * 2 * 3 * 4 = 24
5! = 1 * 2 * 3 * 4 * 5 = 120
Note: The factorial of 0 is 1.
Well quite simple, isn't it. If you analyze carefully you will note that the factorial of any number is calculated by multiplying that number with the factorial of one less than that number
5! = 5 * 4!
4! = 4 * 3!
3! = 3 * 2!
2! = 2 * 1!
or simply we derive the formula for calculating factorial
n! = n * (n  1)!
Now writing the R code for this example.
#Recursion in R: Finding Factorial of a Number
factorial < function(n) {
if (n == 0) return (1)
else
return (n * factorial (n1))
}
You may call this function and provide any positive integer like
> factorial(5)
[1] 120
> factorial(4)
[1] 24
The code becomes more clear and shorter however sometimes it is difficult to find solution to a problem in a recursive way. Moreover, recursive functions may use more memory if they are called for quite a large number of times. The tip is if you have to call a function a few times, recursion is fine but if you have to call a function itself thousands of time, keep an eye on memory usage or better use something else like a for loop or while loop to save memory from repeated function calls.