# C++ Program to Find Factorial of a Number

« Previous Program Next Program »

In this article, you will learn and get code to find and print factorial of a number entered by user at run-time in C++. The factorial program is created in following ways:

• Find factorial of a Number using for Loop
• using while loop
• using user-defined function
• using call by reference

### How to Find Factorial ?

To find factorial of a number n, here is the formula:

`factorial = n*(n-1)*(n-2)*...*3*2*1`

For example, factorial of a number say 6 is:

```6! = 6*5*4*3*2*1
= 30*12*2
= 30*24
= 720```

Note - The symbol ! indicates factorial

## Find Factorial of a Number in C++

To find factorial of a number in C++ programming, you have to ask from user to enter the number. Then find and print factorial of that number using the formula given above.

### Using for Loop

This program find and prints factorial of a number using for loop. The question is, write a program in C++, that finds factorial of a given number using for loop. Here is its answer:

```#include<iostream>
using namespace std;
int main()
{
int num, i, fact=1;
cout<<"Enter the Number: ";
cin>>num;
for(i=num; i>=1; i--)
fact = fact*i;
cout<<"\nFactorial = "<<fact;
cout<<endl;
return 0;
}```

This program was build and run under Code::Blocks IDE. Here is its sample run:

Now supply any number say 5 and press `ENTER` key to find and print its factorial as shown in the snapshot given below:

The dry run of above program with user input 5 goes like:

• Initial value, fact=1
• When user enters 5 as input, then it gets stored in num. So num=5
• Now the evaluation of for loop gets started after receiving the number from user
• That is, the value of num (5) gets initialized to i. So i=5. The initialization part (first part) of for loop executes first, but only at once
• Now the condition, i>=1 or 5>=1 evaluates to be true, therefore program flow goes inside the loop and fact*i or 1*5 or 5 gets initialized to fact
• Program flow goes to the update part (third part) of for loop, decrements the value of i. So i=4
• The condition, i>=1 again gets evaluated
• Every time after updating the value of i, the condition gets evaluated
• And every time, the program flow goes inside the loop after evaluating the condition, until its condition evaluates to be false
• Therefore, before its condition evaluated to be false, here is the value of i and fact after each evaluation:
• i=5, fact=5
• i=4, fact=20
• i=3, fact=60
• i=2, fact=120
• i=1, fact=120
• Now after exiting from the loop, just print the value of fact, that will be the factorial result of given number

### Using while Loop

Here is another program to find factorial of a number, but using while loop in C++. In while loop, there is only one part, that is for condition. So we have to put initialization part before while loop and update part inside its body.

```#include<iostream>
using namespace std;
int main()
{
int num, i, fact=1;
cout<<"Enter the Number: ";
cin>>num;
i=num;
while(i>=1)
{
fact = fact*i;
i--;
}
cout<<"\nFactorial = "<<fact;
cout<<endl;
return 0;
}```

This program produces the same output as of previous program.

### Using user defined Function

Now let's create the same purpose program using a user-defined function named findFact(). This function receives a number as its argument and returns factorial of the number.

```#include<iostream>
using namespace std;
int findFact(int);
int main()
{
int num, fact;
cout<<"Enter the Number: ";
cin>>num;
fact = findFact(num);
cout<<"\nFactorial = "<<fact;
cout<<endl;
return 0;
}
int findFact(int n)
{
int i, f=1;
for(i=n; i>=1; i--)
f = f*i;
return f;
}```

Here is its sample run with user input, 6:

### Using call by Reference

Now this is the last program of this article. This program also calculates factorial, but using call by reference method. That is, the address of variable, fact gets passed as argument to findFact() function. So any change happened to this variable, directly effects the original value.

```#include<iostream>
using namespace std;
void findFact(int, int *);
int main()
{
int num, fact=1;
cout<<"Enter the Number: ";
cin>>num;
findFact(num, &fact);
cout<<"\nFactorial = "<<fact;
cout<<endl;
return 0;
}
void findFact(int n, int *f)
{
int i;
for(i=n; i>=1; i--)
*f = (*f)*i;
}```

Here is its sample run with user input, 4:

#### Same Program in Other Languages

C++ Online Test

« Previous Program Next Program »