A function is said to be a **recursive** if it calls itself. For example, lets say we have a function `abc()`

and in the body of `abc()`

there is a call to the `abc()`

.

## Python example of Recursion

In this example we are defining a **user-defined function** `factorial()`

. This function finds the factorial of a number by calling itself repeatedly until the **base case**(We will discuss more about base case later, after this example) is reached.

# Example of recursion in Python to # find the factorial of a given number def factorial(num): """This function calls itself to find the factorial of a number""" if num == 1: return 1 else: return (num * factorial(num - 1)) num = 5 print("Factorial of", num, "is: ", factorial(num))

Output:

Factorial of 5 is: 120

Lets see what happens in the above example:

factorial(5) returns 5 * factorial(5-1) i.e. 5 * factorial(4) |__5*4*factorial(3) |__5*4*3*factorial(2) |__5*4*3*2*factorial(1)

**Note:** factorial(1) is a base case for which we already know the value of factorial. The base case is defined in the body of function with this code:

if num == 1: return 1

## What is a base case in recursion

When working with recursion, we should define a base case for which we already know the answer. In the above example we are finding factorial of an integer number and we already know that the factorial of 1 is 1 so this is our base case.

Each **successive recursive call** to the function should bring it closer to the base case, which is exactly what we are doing in above example.

We use base case in recursive function so that the function stops calling itself when the base case is reached. Without the base case, the function would keep calling itself indefinitely.

## Why use recursion in programming?

We use recursion to break a big problem in small problems and those small problems into further smaller problems and so on. At the end the solutions of all the smaller subproblems are collectively helps in finding the solution of the big main problem.

### Advantages of recursion

Recursion makes our program:

1. Easier to write.

2. Readable – Code is easier to read and understand.

3. Reduce the lines of code – It takes less lines of code to solve a problem using recursion.

### Disadvantages of recursion

1. Not all problems can be solved using recursion.

2. If you don’t define the base case then the code would run indefinitely.

3. Debugging is difficult in recursive functions as the function is calling itself in a loop and it is hard to understand which call is causing the issue.

4. Memory overhead – Call to the recursive function is not memory efficient.