C Program to Find Factorial of a Number

The factorial of a positive integer n, denoted by n!, is the product of all positive integers less than or equal to n. Factorial does not exist for negative numbers and factorial of 0 is 1. Its most basic occurrence is the fact that there are n! ways to arrange n distinct objects into a sequence.

The C Program to Find the Factorial of a Number is a fundamental exercise that introduces beginners to the concept of recursion, functions, and basic arithmetic operations in C programming.

N! = 1*2*3*4*.... *(N-2)*(N-1)*N
For Example
6! = 6 * 5 * 4 * 3 * 2 * 1 = 720.

Importance of Practicing the Factorial Program for Beginners

  • Introduction to Recursion : This program introduces beginners to the concept of recursion, where a function calls itself to solve a problem. It helps them understand how to break down a problem into smaller, more manageable parts.

  • Understanding of Functions : Implementing this program helps beginners understand the concept of functions and how to use them to organize and structure their code.

  • Enhanced Problem-solving Skills : Implementing this program enhances problem-solving skills by challenging beginners to think recursively and develop algorithms to find the factorial of a number.

  • Mathematical Concepts : The factorial of a number is a mathematical operation that is frequently used in mathematics and computer science. This program provides a practical example of how mathematical concepts can be implemented in programming.

  • Preparation for Advanced Topics : The skills and concepts learned from this program prepare beginners for more advanced topics in C programming, such as dynamic programming, data structures, and algorithms. It lays the foundation for understanding more complex programming concepts.

C program to calculate factorial of a number using loop

In this program we first take N as input from user. Then using a for loop we calculate product of all numbers from 1 to N. Here we are using for loop but this program also can be solved in similar way using while loop. After calculating value of N! we print it on screen using printf function.

#include <stdio.h>

int main(){
    int N, nFactorial, counter;
    printf("Enter a number for factorial calculation \n");
    scanf("%d",&N);
    for(counter=1,nFactorial=1; counter <= N; counter++){
        nFactorial = nFactorial * counter;
    }
    printf("Factorial of %d is %d", N, nFactorial);
    
    return 0;
}
Output
Enter a number for factorial calculation 
5
Factorial of 5 is 120
Enter a number for factorial calculation 
0
Factorial of 0 is 1

C program to calculate factorial of a number using function

In below program, we wrote a function called getFactorial which takes an integer N as input and returns it factorial value (N!). It also does input validation and prints error message for negative number, as we know factorial is not defined for negative numbers.

#include <stdio.h>

int getFactorial(int N);
int main(){
    int N, nFactorial = 0;
    printf("Enter a number\n");
    scanf("%d",&N);
    nFactorial = getFactorial(N);
    
    if(nFactorial != 0){
        printf("Factorial of %d is %d", N, nFactorial);
    }    
    return 0;
}

int getFactorial(int N){
    if(N < 0){
        printf("Invalid Input: factorial not defined for
negative numbers\n");
        return 0;
    }
    int nFactorial, counter;
    /*  N! = N*(N-1)*(N-2)*(N-3)*.....*3*2*1  */
    for(counter=1,nFactorial=1; counter <= N; counter++){
        nFactorial = nFactorial * counter;
    }    
    return nFactorial;
}
Output
Enter a number
6
Factorial of 5 is 720
Enter a number for factorial calculation 
-3
Invalid Input: factorial not defined for negative numbers

C Program to find factorial of a number using recursion

We can use recursion to calculate factorial of a number because factorial calculation obeys recursive sub-structure property. Let factorial(N) is a function to calculate and return value of N!. To find factorial(N) we can first calculate factorial(N-1) then multiply it with N.
N! = 1 x 2 x 3 x 4....x (N-2) x (N-1) x N
N! = (N-1)! x N

factorial(N) = factorial(N-1) x N
Function factorial(N) reduces the problem of finding factorial of a number N into sub-problem of finding factorial on N-1. It keeps on reducing the domain of the problem until N becomes zero.

#include <stdio.h>
 
int getFactorial(int N);
int main(){
    int N, nFactorial, counter;
    printf("Enter a number for factorial calculation \n");
    scanf("%d",&N);
 
    printf("Factorial of %d is %d", N, getFactorial(N));
   
    return 0;
}
 
int getFactorial(int N){
    /* Exit condition to break recursion */
    if(N <= 1){
         return 1;
    }
    return N * getFactorial(N - 1);
}

Tips for Writing the Factorial Program in C

  • Use Recursion : Use recursion to define the factorial of a number.

  • Integer Overflow : Be mindful of integer overflow when calculating factorials of large numbers.

  • Base Case : Define a base case for the recursive function to prevent infinite recursion.

  • Optimization : Consider optimizing the factorial calculation using iterative methods for large numbers.

  • Error Handling : Handle errors such as negative input numbers gracefully.

  • Understanding the Problem : Understand the problem thoroughly before attempting to write the program.

Conclusion

In conclusion, the C Program to Find the Factorial of a Number is a foundational exercise that introduces beginners to recursion, functions, and basic arithmetic operations in C programming. Practicing this program is important for beginners to develop a solid understanding of these concepts, which are essential for more advanced programming tasks.

Related Topics
C program to check string is palindrome
C program to check armstrong number
C Program to print fibonacci series
C program to convert string to integer
C program to check string is palindrome
C program to find a substring from a given string
C program to find hcf and lcm of two numbers
List of all C programs