Before going to the program first let us see what is *Factorial of a Number? *and* *what is* Recursion?*

**Factorial of a Number:**

The *factorial of a Number* *n*, denoted by *n!* , is the product of all positive integers less than or equal to *n*.

The value of 0! is 1 according to the convention for an empty product.

For example,

6! = 6 * 5 * 4 * 3 * 2 * 1 = 720

**Recursion:**

In C programming language, if a function calls itself over and over again then that function is known as *Recursive Function*.

The process of function calling itself repeatedly is known as *Recursion*.

**Related: **Factorial of a Number in C++ without using Recursion

## Program code for Factorial of a Number using Recursion:

/* Factorial of a number using Recursion */ #include<iostream.h> #include<conio.h> int fact(int); void main() { int num,f; clrscr(); cout<<"n Enter the number: "; cin>>num; f=fact(num); cout<<"n The factorial of " <<num<<" is "<<f; getch(); } int fact(int n) { if(n==0||n==1) return 1; else return(n * fact(n-1)); }

**Related: **Factorial of a Number in C using Recursion

## Working:

- First the computer reads the number to find the factorial of the number from the user.
- Then using recursive function the factorial value is calculated and returns the factorial value to main function.
- Finally the factorial value of the given number is printed.

## Step by Step working of the above Program Code:

Let us assume that the number entered by the user is **5.**

- It assigns the value of n=
**5**. - Then using a variable
**f**the recursive function**fact(n)**is called.

2.1. n==0 || n==1 (5==0 || 5==1) if condition is false.

So it goes to the else part.

else

return(n * fact(n-1)) So, (return(5 * **fact(4)**)) // function calls itself

2.2. n==0 || n==1 (4==0 || 4==1) if condition is false.

So it goes to the else part.

else

return(n * fact(n-1)) So, (return(4 * **fact(3)**)) // function calls itself

2.3. n==0 || n==1 (3==0 || 3==1) if condition is false.

So it goes to the else part.

else

return(n * fact(n-1)) So, (return(3 * **fact(2)**)) // function calls itself

2.4. n==0 || n==1 (2==0 || 2==1) if condition is false.

So it goes to the else part.

else

return(n * fact(n-1)) So, (return(2 * **fact(1)**)) // function calls itself

2.5. n==0 || n==1 (1==0 || 1==1) if condition is true.

So it return the value **1 **to** fact(1) **in** step 2.4.**

which further return the value **2 **to** fact(2) **in** step 2.3.**

which further return the value **6 **to** fact(3) **in** step 2.2.**

which further return the value **24 **to** ****fact(4) **in** step 2.1.**

which further return the value **120 **to** ****f **in** main function.**

- Finally it prints as given below

The Factorial of 5 is 120

- Thus the program execution is completed.