# C++ Program to Find the Factorial of a Number using Recursion

«
»

This is a C++ Program to find the factorial of a number using recursion.

Problem Description

We have to write a C++ program to find out the factorial of a given number using recursion. In mathematics, the factorial of a positive integer n, denoted by n!, is the product of all positive integers less than or equal to n.
For example,
5! = 5 * 4 * 3 * 2 * 1 = 120
The value of 0! is 1, according to the convention for an empty product.
NOTE: Factorial is calculated only for non negative integers.

Expected Input and Output

Case 1. When we take a positive integer

```If the input number is 5,
then the expected output will be 120.```

Case 2. When the number is zero.

```If the input number is 0,
then the expected output will be 1.```
Problem Solution

1. In order to find factorial of a number we can either create a separate function or calculate in the main function itself.
2. First of all input the number whose factorial is to be determined (say n).
3. If the number is 0 or 1 simply return 1.
4. If the number is other than 0 or 1 (say n), then recursively call factorial function as: n*factorial(n-1), where factorial() is the function which returns the factorial of a number.
8. This way we calculate n! as n*(n-1)*(n-2)*(n-3)……..1

Note: Join free Sanfoundry classes at Telegram or Youtube
Program/Source Code

Here is source code of the C++ Program to find the factorial of a number using recursion. The program is successfully compiled and tested using Codeblocks gnu/gcc compiler on Windows 10. The program output is also shown below.

1. `/*`
2. ` * C++ Program to find factorial of a number using recursion.`
3. ` */`
4. `#include<iostream>`
5. `using namespace std;`
6. `class fact`
7. `{`
8. `public:`
9. `    /*`
10. `     * Function to find the factorial`
11. `     */`
12. `    int factorial(int n)`
13. `    {`
14. `        int pro = 1;`
15. `        if(n == 0 || n == 1)`
16. `        {`
17. `            return 1;`
18. `        }`
19. `        return n * factorial(n-1);`
20. `    }`
21. `};`
22. `/*`
23. ` * Main function`
24. ` */`
25. `int main()`
26. `{`
27. `    fact f;`
28. `    int n;`
29. `    cout<<"Enter the number whose factorial is to be calculated\t";`
30. `    cin>>n;`
31. `    cout<<"\nFactorial of "<<n<<" is = "<<f.factorial(n);`
32. `    return 0;`
33. `}`
Program Explanation

1. Here in this program we have created a function called factorial which takes in the number whose factorial is to be determined.
2. We will recursively call the function factorial till n keeps on decreasing to become 1.
3. Since at every recursion we are passing factorial(n-1) after some time this n-1 will become equivalent to 1 which can lead to a terminating case where if n is either 0 or 1, we return 1.
So this way we calculate factorial recursively as n * factorial(n – 1).

Runtime Test Cases
```1. Enter the number whose factorial is to be calculated    5

Factorial of 5 is = 120
2. Enter the number whose factorial is to be calculated    0

Factorial of 0 is = 1```

Sanfoundry Global Education & Learning Series – 1000 C++ Programs. 