In this article, we are going to discuss recursion or recursive functions in C#. We will learn how to use recursive methods and what is the difference between recursive methods and regular methods.

## What is Recursive Function?

Simply we can say recursive function is a function that calls itself, until it reaches at a specific condition. Each time a recursive function calls itself with new parameter value.

A famous example of recursion is factorial, factorial itself is the product of an integer and all the integers below it for example factorial four ( *4!* ) is equal to 24.

1! = 1 = 1

2! = 2 x 1 = 2

3! = 3 x 2 x 1= 6

4! = 4 x 3 x 2 x 1 = 24

## Computing Factorial in a Non Recursive Way

If you want to compute the factorial in a **non recursive method**, you would probably do something like this.

1 2 3 4 5 6 7 8 9 10 11 | public long Factorial(int n) { if (n == 0) return 1; long value = 1; for (int i = n; i > 0; i--) { value *= i; } return value; } |

## Computing Factorial in a Recursive Way

If you want to compute the factorial in a** recursive method**, which is shorter and smarter.

1 2 3 4 5 6 | public long Factorial(int n) { if (n == 0) return 1; return n * Factorial(n - 1); } |

If we wanted to breakdown how the recursive method works, it would be something like this :

## Advantages of Using Recursive Methods:

- Recursive functions are usually much shorter and cleaners than iterative versions.
- Reduce unnecessary calling of a function.
- Many algorithms are defined recursively, so it is easy to implement them recursively.
- Many data structures are naturally recursive (trees for example) and so it is natural to operate on them recursively.

## Disadvantages of Using Recursive Methods:

- Recursive functions are slightly slower than iterative ones.
- They are very difficult to trace, debug and understand.
- Can use a lot of stack space.
- A recursive function uses more processor time.