C Program for factorial of a number

Factorial of a non-negative integer is multiplication of all integers smaller than or equal to n. For example factorial of 6 is 6*5*4*3*2*1 which is 720.

Recursive:

filter_none

edit
close

play_arrow

link
brightness_4
code

// C program to find factorial of given number
  
#include <stdio.h>
  
// Function to find factorial of given number
unsigned int factorial(unsigned int n)
{
    if (n == 0)
        return 1;
    return n * factorial(n - 1);
}
  
// Driver code
int main()
{
    int num = 5;
    printf("Factorial of %d is %d",
           num, factorial(num));
    return 0;
}

chevron_right


Output:

Factorial of 5 is 120

Iterative :

filter_none

edit
close

play_arrow

link
brightness_4
code

#include <stdio.h>
  
// Function to find factorial of given number
unsigned int factorial(unsigned int n)
{
    int res = 1, i;
    for (i = 2; i <= n; i++)
        res *= i;
    return res;
}
  
// Driver code
int main()
{
    int num = 5;
    printf("Factorial of %d is %d",
           num, factorial(num));
    return 0;
}

chevron_right


Output:

Factorial of 5 is 120

One line Solution (Using Ternary operator):

filter_none

edit
close

play_arrow

link
brightness_4
code

// C++ program to find factorial of given number
  
#include <iostream>
  
int factorial(int n)
{
    // single line to find factorial
    return (n == 1 || n == 0)
               ? 1
               : n * factorial(n - 1);
}
  
// Driver code
int main()
{
    int num = 5;
    printf("Factorial of %d is %d",
           num, factorial(num));
    return 0;
}
// This code is contributed by  Rithika palaniswamy.

chevron_right


Output:

Factorial of 5 is 120

Using tgamma() method:

Example:

Input: n = 4
Output: 24

Syntax:

tgamma(n+1)=n!
It works upto 20! because c can't store large value

Implementation: use math.h header file for this

filter_none

edit
close

play_arrow

link
brightness_4
code

#include <math.h>
#include <stdio.h>
  
int main()
{
  
    // use long long int
    // for larger values of n
    int n = 4;
  
    // tgamma(n+1)=n!
    n = tgamma(n + 1);
  
    printf("%d", n);
    return 0;
    // This code is contributed by Soumyadip Basak
}

chevron_right


Output:

24

The above solutions cause overflow for large numbers. Please refer factorial of large number for a solution that works for large numbers.

Please refer complete article on Program for factorial of a number for more details!



My Personal Notes arrow_drop_up

Improved By : basaksoumyadip7



Article Tags :
Practice Tags :


Be the First to upvote.


Please write to us at contribute@geeksforgeeks.org to report any issue with the above content.