# C++ program to Find Factorial of a Number Using Recursion

Here is a C++ program to find factorial of a number using recursion. In this C++ program, we will find factorial of a number using recursion.

The factorial of a integer N, denoted by N! is the product of all positive integers less than or equal to n.
N! = 1 x 2 x 3 x 4....x (N-2) x (N-1) x N
For Example :
```6! = 6 * 5 * 4 * 3 * 2 * 1 = 720.
0! = 1
1! = 1
```

NOTE : Factorial does not exist for negative numbers and factorial of 0 is 1.

The expression to calculate factorial obeys recursive sub-structure property, hence we can use use recursion to calculate factorial.

Let factorial(N) is a function to calculate the value of N!. To find factorial(N) we can first calculate factorial(N-1) then multiply it with N.

```N! = 1 x 2 x 3 x 4....x (N-2) x (N-1) x N
N! = (N-1)! x N
factorial(N) = factorial(N-1) x N
```

Function factorial(N) reduces the problem of finding N! into sub-problem of finding (N-1)! first and then multiplying it with N to get N!. It keeps on reducing the domain of the problem until N becomes zero.

## C++ program to Calculate Factorial of a Number Using Recursion

```#include <iostream>
using namespace std;

int getFactorial(int N);

int main(){
int N;
cout << "Enter a Number\n";
cin >> N;

cout << "Factorial of " << N << " = " <<
getFactorial(N);

return 0;
}

int getFactorial(int N){
// Recursion Termination condition
if(N <= 1){
return 1;
}
return N * getFactorial(N - 1);
}
```
Output
```Enter a Number
5
Factorial of 5 = 120
```

In above program, we are using a recursive function getFactorial(N) to calculate the factorial of N. If N <= 1, then getFactorial function returns 1, (this is the recursion termination condition) otherwise, it recursively calls itself to calculate factorial of N-1 and multiply it with N to get N!.

Inside main function, we first take a number as input from user using cin ans store it in a variable N. Then we call getFactorial function by passing N as parameter to calculate N!. Above c++ program cannot be used to calculate factorial of large numbers because factorial of such numbers exceeds the range of int data type.

Recommended Posts
 C++ Program to Find Factorial of a Number C++ Program to Display Factors of a Number C++ program to Check Whether a Number can be Split into Sum of Two Prime Numbers C++ Program to Check for Armstrong Number C++ Program to Find All Square Roots of a Quadratic Equation C++ Program to Find Power of a Number C++ Program to check Whether a Number is Palindrome or Not C++ Program to Check Prime Number C++ Program to Find LCM and GCD of Two Numbers C++ Program to Find Quotient and Remainder All C++ Programs