# Factorial of a Number in C using Recursion

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,

5! = 5 * 4 * 3 * 2 * 1 = 120

**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:

#include<stdio.h> #include<conio.h> void main() { int num,f; clrscr(); printf("\n Enter the number: "); scanf("%d",&num); f=fact(num); printf("\n The factorial of the number %d is %d",num,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 **4**.

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

2.1. 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.2. 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.3. 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.4. n==0 || n==1 (1==0 || 1==1) if condition is true.

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

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

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

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

- Finally it prints as given below

The Factorial of the number 4 is 24

- Thus the program execution is completed.

## Output:

### TO DOWNLOAD THE PROGRAM CODE :CLICK HERE