Open In App

C++ Program To Find Factorial Of A Number

Last Updated : 23 Jun, 2023
Improve
Improve
Like Article
Like
Save
Share
Report

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

Factorial of a number

 

Recursive Solution

Factorial can be calculated using the following recursive formula.

  n! = n * (n-1)!
  n! = 1 if n = 0 or n = 1

Below is the C++ program to find the factorial of a number using a recursive solution:

C++




// C++ program to find factorial
// of given number
#include <iostream>
using namespace std;
 
// 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;
    cout << "Factorial of " << num << " is "
         << factorial(num) << endl;
    return 0;
}


Output

Factorial of 5 is 120

The complexity of the above method

Time complexity: O(n) where n is the length of the string.

Auxiliary Space: O(n) 

Iterative Solution

Factorial can also be calculated iteratively as recursion can be costly for large numbers. Here we have shown the iterative approach using both for and while loops. 

1. Using For loop

Below is the C++ program to find the factorial of a number using for loop:

C++




// C++ program for factorial
// of a number
#include <iostream>
using namespace std;
 
// 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;
    cout << "Factorial of " << num << " is "
         << factorial(num) << endl;
    return 0;
}


Output

Factorial of 5 is 120

The complexity of the above method

Time complexity: O(n)

Auxiliary Space: O(1) 

2. Using While loop

Below is the C++ program to find the factorial of a number using a while loop:

C++




// C++ program for factorial
// of a number
#include <iostream>
using namespace std;
 
// Function to find factorial of given
// number using while loop
unsigned int factorial(unsigned int n)
{
    if (n == 0)
        return 1;
    int i = n, fact = 1;
    while (n / i != n) {
        fact = fact * i;
        i--;
    }
    return fact;
}
 
// Driver code
int main()
{
    int num = 5;
    cout << "Factorial of " << num << " is "
         << factorial(num) << endl;
    return 0;
}


Output

Factorial of 5 is 120

The complexity of the above method

Time complexity: O(n)

Auxiliary Space: O(1) 

Using Ternary Operator

Below is the C++ program to find the factorial of a given number using the ternary operator:

C++




// C++ program to find factorial
// of given number
#include <iostream>
using namespace std;
 
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;
    cout << "Factorial of " <<
             num << " is "<<
             factorial(num);
    return 0;
}
 
// This code is contributed by shivanisinghss2110


Output

Factorial of 5 is 120

The complexity of the above method

Time complexity: O(n), for recursion.

Auxiliary space: O(n), for recursion call stack.

Using Call By Reference

Below is the C++ program to find the factorial of a given number using call by reference:

C++




// C++ program to find the factorial
// of a given number using call
// by reference method
#include<iostream>
using namespace std;
 
// Function to find factorial
void factorial(int n, int *f)
{
    int i;
    for(i = n; i >= 1; i--)
        *f = (*f) * i;
}
 
// Driver code
int main()
{
    int num = 5, fact = 1;
   
    factorial(num, &fact);
    cout << "Factorial of " <<
             num << " is "<<
             fact;
    return 0;
}


Output

Factorial of 5 is 120


Like Article
Suggest improvement
Previous
Next
Share your thoughts in the comments

Similar Reads