Factorial is used in many areas of mathematics but mainly used in permutation and combination. Factorial is the product of the all positive number from 1 to n (user entered number). In simple words, we can say that factorial of n would be 1*2*3*…..*n.
Note: There is no factorial exist for the negative number and the value of !0 is 1.
Factorial of positive number would be:
!n = n * !(n-1)
For example,
!5 = 5*4*3*2*1*!0 = 120.
Some factorials of numbers
| n | n! |
| 0 | 1 |
| 1 | 1 |
| 2 | 2 |
| 3 | 6 |
| 4 | 24 |
| 5 | 120 |
| 6 | 720 |
| 7 | 5040 |
| 8 | 40320 |
| 9 | 362880 |
| 10 | 3628800 |
Here I am describing the few methods to calculate the factorial of a positive number in C. I hope you are familiar with while and for loop in C.
1) Factorial of a number in C using the for loop
The below program takes a positive integer number from the user and computes its factorial using the for loop.
#include <stdio.h>
int main(int argc, char *argv[])
{
unsigned int iLoop,iFactorial = 1;
int iNumber=0;
printf("Enter a number: ");
scanf("%d",&iNumber);
if(iNumber < 0 )
{
printf("factorial of negative number dose not exist\n\n\n");
}
else
{
for(iLoop=1; iLoop<=iNumber; iLoop++)
{
iFactorial*= iLoop;
}
printf("\n\nFactorial of %d is: %u\n\n\n\n",iNumber,iFactorial);
}
return 0;
}
OutPut
When the user Enters the negative number.

When the user enters the positive number.

2.) Factorial of a number using the recursive method.
A function is called recursive, if it is called by itself. You can see this article, Recursion in C. Before writing the code I want to show here a flow diagram which to describe the flow of the code.

#include <stdio.h>
//Calculate factorial in C
unsigned long fact(unsigned long int n)
{
if (n == 0)
{
return 1;
}
else
{
return(n * fact(n - 1));
}
}
//Driving function
int main(int argc, char *argv[])
{
unsigned long n = 0;
unsigned result = 0;
printf("Enter a positive integer number: ");
scanf("%lu", &n);
//check negative number
if (n < 0)
{
printf("\nFactorial of a negative number dose not exist \n");
}
else
{
result = fact(n);
printf("\nThe Factorial of %d is : %d.\n", n, result);
}
return 0;
}
Output:

Working of the above code,
Here n = 3
fact(3) = 3 * fact(2)
fact(2) = 2* fact(1)
fact(1) = 1 *fact(0);
When n=0, condition becomes true and recursion stops and control returns to factorial(1). Now reverse process occurs and function will return a value to the previous function calls.
Note: There should be a termination point in a recursive function.

So the final result will be:
fact(3) = 3*2*1 = 6
You can also see the below articles,
3.) Factorial of a number in C using the while loop
#include <stdio.h>
int main(int argc, char *argv[])
{
unsigned int iLoop = 1,iFactorial = 1;
int iNumber = 0;
printf("\n\nEnter a number: ");
scanf("%d",&iNumber);
if(iNumber < 0 )
{
printf("factorial of negative number dose not exist\n\n\n");
}
else
{
while(iLoop <= iNumber)
{
iFactorial*= iLoop; // product from 1 to n
iLoop++; // Increment the value
}
printf("\n\nFactorial of %d is: %u\n\n\n\n",iNumber,iFactorial);
}
return 0;
}
4.) Calculate the factorial using the look-up table
If you need the factorial of the small number then the look-up table is the best option because it is fast as compared to iteration and recursion method.
In below program, I am creating a look-up table which contains the factorial of-of 0 to 10;
#include <stdio.h>
//Function returns the factorial
int iReturnFactorial(int index);
int main(int argc, char *argv[])
{
long int iFactorial =1;
int iNumber = 0;
printf("Enter a positive integer number: ");
scanf("%d", &iNumber);
if (iNumber < 0)
{
printf("\nFactorial of a negative number dose not exist \n");
}
else
{
iFactorial = iReturnFactorial(iNumber);
printf("\nThe Factorial of %d is : %lu\n", iNumber, iFactorial);
}
return 0;
}
int iReturnFactorial(int index)
{
//Look up table
const int acFactValue [11]= {1,1,2,6,24,120,720,5040,40320,362880,3628800};
return acFactValue[index];
}
5.) Calculate the factorial using a function
#include <stdio.h>
//Function calculate factorial
int iCalculateFactorial(int);
int main(int argc, char *argv[])
{
int iFactorial =1,iNumber=0;
printf("Enter a positive integer number: ");
scanf("%d", &iNumber);
if (iNumber < 0)
{
printf("\nFactorial of a negative number dose not exist \n");
}
else
{
iFactorial = iCalculateFactorial(iNumber);
printf("\nThe Factorial of %d is : %d \n", iNumber, iFactorial);
}
return 0;
}
int iCalculateFactorial(int iNumber)
{
int iLoop, iFactorial = 1;
for(iLoop=1; iLoop<=iNumber; iLoop++)
{
iFactorial*= iLoop;
}
return iFactorial;
}
Recommended Articles for you:
- C program to find a neon number.
- Find the prime number using the C program.
- Find all prime numbers up to n using trial division and Sieve of Eratosthenes algorithm.
- Check date validity in C?
- How to use if in C programming.
- C language character set.
- How to use C if-else condition?
- How to use for loop in C?
- Elements of C Language.
- Data type in C language.
- Operators with Precedence and Associativity.
- 100 C interview Questions.
- 5 ways to find factorial of a number in C.
- C Program to find the Range of Fundamental Data Types.
- Fibonacci Series Program In C: A simple introduction.
- How to use atoi() and how to make own atoi()?
- Program to check leap year in C language.
- How to use the structure of function pointer in c language?
- Create a students management system in C.
- Create an employee management system in C.
- Top 11 Structure Padding Interview Questions in C
- File handling in C.
