C++ Program to Find Factorial of a Number

  • Write a C++ program to calculate factorial of a number using for loop.
  • How to calculate factorial of a number using recursion.

Factorial of a positive integer n, denoted by n!, is the product of all positive integers less than or equal to n. Factorial is undefined for negative numbers and factorial of 0 is equal to 1. The n! represents the number of ways to arrange n distinct objects into a sequence.

N! = N*(N-1)*(N-2)..... 4*3*2*1

C++ program to find factorial of a number using loop

#include <iostream>

using namespace std;
 
int main(){
    int N, factorial = 1, i;
    cout << "Enter a number for factorial calculation\n";
    cin >> N;
    /*
     * N! = N*(N-1)*(N-2)*(N-3)*.....*3*2*1 
     */
    for(i = 1; i <= N; i++){
        factorial = factorial * i;
    }
    cout << "Factorial of " << N << " is " << factorial;
     
    return 0;
}
Output
Enter a number for factorial calculation 
4
Factorial of 4 is 24
Enter a number for factorial calculation 
0
Factorial of 0 is 1

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 getFactorial(N) is a function to calculate and return value of N!. To find getFactorial(N) we can first calculate getFactorial(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

getFactorial(N) = getFactorial(N-1) x N

Function getFactorial(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 <iostream>

using namespace std;
 
int getFactorial(int N);

int main(){
    int N;
    cout << "Enter a Number\n";
    cin >> N;
 
    cout << "Factorial of " << N << " = " << getFactorial(N);
     
    return 0;
}
 
// Recursive function to find factorial of a number

int getFactorial(int N){
    // Recursion Termination condition
    if(N <= 1){
         return 1;
    }
    return N * getFactorial(N - 1);
}
Output
Enter a Number
7
Factorial of 7 = 5040