C++ Program To Find Factorial Of A Number
Last Updated :
23 Jun, 2023
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.
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++
#include <iostream>
using namespace std;
unsigned int factorial(unsigned int n)
{
if (n == 0)
return 1;
return n * factorial(n - 1);
}
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++
#include <iostream>
using namespace std;
unsigned int factorial(unsigned int n)
{
int res = 1, i;
for (i = 2; i <= n; i++)
res *= i;
return res;
}
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++
#include <iostream>
using namespace std;
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;
}
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++
#include <iostream>
using namespace std;
int factorial( int n)
{
return ((n == 1 || n == 0) ? 1 :
n * factorial(n - 1));
}
int main()
{
int num = 5;
cout << "Factorial of " <<
num << " is " <<
factorial(num);
return 0;
}
|
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++
#include<iostream>
using namespace std;
void factorial( int n, int *f)
{
int i;
for (i = n; i >= 1; i--)
*f = (*f) * i;
}
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
Share your thoughts in the comments
Please Login to comment...