### Factorial Definition

The Factorial of any number is the product of all the numbers that are less than or equal to that number and greater than 0 and it is denoted with the symbol (!). The mathematical representation of the Factorial is as shown below:

n! = n * (n-1) * (n -2) * …….* 1

For example, five Factorial is represented as 5! = 5 * 4 * 3 * 2 * 1 = 120

In this article, we will show you How to write a Factorial Program in Java Programming Language using For Loop, While Loop, Functions and Recursion.

## Factorial Program in Java using For Loop

This Java program allows the user to enter any integer value. Using this value, this program will find Factorial of a number using the Java For Loop

**JAVA CODE**

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
// Factorial Program in Java using For Loop package FrequentPrograms; import java.util.Scanner; public class FactorialNumberUsingFor { private static Scanner sc; public static void main(String[] args) { int i, Number; long Factorial = 1; sc = new Scanner(System.in); System.out.println(" Please Enter any number to Find Factorial: "); Number = sc.nextInt(); for (i = 1; i <= Number; i++) { Factorial = Factorial * i; } System.out.format("\nFactorial of %d = %d\n", Number, Factorial); } } |

**OUTPUT**

**ANALYSIS**

First, We declared two integer variables i and number. We also declared one long variable Factorial and assigned value of 1.

1 2 |
int i, Number; long Factorial = 1; |

**NOTE:** Although we are calculating the factorial of an integer variable we declared output (Factorial) as long variable because, When we are calculating the factorial for large integers, the result will definitely cross the integer limit.

Following System.out.println statement will ask the user to enter his/her own integer value to calculate the factorial and next we are assigning the user entered value to the Number variable

1 2 |
System.out.println(" Please Enter any number to Find Factorial: "); Number = sc.nextInt(); |

Within the For Loop, We initialized the integer I value to 1 and also (i <= Number) condition will help the loop to terminate when the condition fails.

1 2 3 |
for (i = 1; i <= Number; i++) { Factorial = Factorial * i; } |

Let us see the working principle of this for loop in iteration wise. From the above screenshot you can observe that, User entered value: Number = 4 and as we know i = 10 and Factorial = 1

**First Iteration**

- Condition inside the For loop (1 <= 4) is True so, program will start executing statements inside the for loop
- Factorial = Factorial * i;
- Factorial = 1 *1 = 1
- Lastly, i will be incremented to 1. It means i will become 2. Please refer Increment and Decrement Operators in Java article to understand the ++ notation.

**Second Iteration**

From the first iteration i value became 2 and Factorial = 1

- Condition inside the For loop (2 <= 4) is True so, program will start executing statements inside the for loop
- Factorial = Factorial * i;
- Factorial = 1 *2 = 2
- Lastly, i will be incremented to 1. It means i will become 3.

**Third Iteration**

From the second iteration i value became 3 and Factorial = 2

- Condition inside the For loop (3 <= 4) is True so, program will start executing statements inside the for loop
- Factorial = Factorial * i;
- Factorial = 2 *3 = 6
- Lastly, i will be incremented to 1. It means i will become 4.

**Fourth Iteration**

From the second iteration i value became 4 and Factorial = 6

- Condition inside the For loop (4 <= 4) is True so, program will start executing statements inside the for loop
- Factorial = Factorial * i;
- Factorial = 6 * 4 = 24
- Lastly, i will be incremented to 1. It means i will become 5.

**Fifth Iteration**

Condition inside the For loop (4 <= 4) is False so, For loop will be Terminated.

Last System.out.format statement will print the Factorial output of the user entered integer. Within the statement first %d refers to Number and second %d refers to Factorial.

1 |
System.out.format("\nFactorial of %d = %d\n", Number, Factorial); |

## Factorial Program in Java using While Loop

This Java program allows the user to enter any integer value. Using this value, this program will find Factorial of a number using the Java While Loop

**JAVA CODE**

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
// Factorial Program in Java using While Loop package FrequentPrograms; import java.util.Scanner; public class FactorialNumberUsingWhile { private static Scanner sc; public static void main(String[] args) { int i = 1, Number; long Factorial = 1; sc = new Scanner(System.in); System.out.println(" Please Enter any number to Find Factorial: "); Number = sc.nextInt(); while (i <= Number) { Factorial = Factorial * i; i++; } System.out.format(" Factorial of %d = %d", Number, Factorial); } } |

**OUTPUT**

**ANALYSIS**

We just replaced the For loop in the above example with the While loop. If you don’t understand the While Loop then please refer While Loop article here: Java While Loop

## Factorial Program in Java using Functions

This Java program allows the user to enter any integer value. User entered value will be passed to the Method we created. Within this User defined function, this program will find Factorial of a given number using the Java For Loop

**JAVA CODE**

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
// Factorial Program in Java using Functions package FrequentPrograms; import java.util.Scanner; public class FactorialNumberUsingFunctions { private static Scanner sc; private static long Factorial = 1; public static void main(String[] args) { int Number; sc = new Scanner(System.in); System.out.println(" Please Enter any number to Find Factorial: "); Number = sc.nextInt(); Factorial = FactorialNumber(Number); System.out.format(" Factorial of %d = %d", Number, Factorial); } public static long FactorialNumber (int Number) { int i; for (i = 1; i <= Number; i++) { Factorial = Factorial * i; } return Factorial; } } |

**OUTPUT**

**ANALYSIS**

We assigned the function return value to long variable because the FactorialNumber(Number); function will return the long value as output

1 |
Factorial = FactorialNumber(Number); |

When the compiler reaches to FactorialNumber(Number) line in main() program, the compiler will immediately jump to below function:

1 |
public static long FactorialNumber (int Number) { |

We already explained the LOGIC in above example.

Last line ends with *return Factorial* Statement. It means every time we call the FactorialNumber( ) function it will return factorial value of type long.

**NOTE: **If we create a function with Void then there is no need to return any value but, if we declared a function with any data type (int, float etc) then we have return something out from the function.

## Factorial Program in Java using Recursion

This program allows the user to enter any integer value. User entered value will be passed to the Function we created. Within this User defined function, this program will find Factorial of a number Recursively. In this Java program, we are dividing the code using the Object Oriented Programming. To do this, First we will create a class which holds a method to reverse an integer recursively.

**JAVA CODE**

1 2 3 4 5 6 7 8 9 10 11 12 |
package FrequentPrograms; public class FactorialNumber { public long Factorial_Number (int Number) { if (Number == 0 || Number == 1) { return 1; } else { return Number * Factorial_Number (Number -1); } } } |

Within the Main program, we will create an instance of the above specified class and call the methods

**JAVA CODE**

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
package FrequentPrograms; import java.util.Scanner; public class FactorialNumberUsingRecursion { private static Scanner sc; public static void main(String[] args) { int Number; long Factorial = 1; sc = new Scanner(System.in); System.out.println(" Please Enter any number to Find Factorial: "); Number = sc.nextInt(); FactorialNumber fn = new FactorialNumber(); Factorial = fn.Factorial_Number(Number); System.out.format(" Factorial of %d = %d", Number, Factorial); } } |

**OUTPUT**

**ANALYSIS**

**FactorialNumber Class Analysis:**

Within this class, we defined a function. Following function will accept integer values as parameter value and return integer value

1 |
public long Factorial_Number (int Number) { |

Within the user defined function, We used the If Else Statement to check whether the Given Number is Equal to 0 or Equal to 1

- If the condition is TRUE then the function will return 1.
- If the condition is False then the function will return Number * (Number -1) recursively.

User Entered Value = 8

First If statement fails So,

Factorial = Number * Factorial_Number(Number -1);

= 8 * Factorial_Number (8 -1)

= 8 * Factorial_Number (7)

= 8 * 7 * Factorial_Number (6)

= 8 * 7 * 6 * Factorial_Number (5)

= 8 * 7 * 6 * 5 * Factorial_Number (4)

= 8 * 7 * 6 * 5 * 4 * Factorial_Number (3)

= 8 * 7 * 6 * 5 * 4 * 3 * Factorial_Number (2)

= 8 * 7 * 6 * 5 * 4 * 3 * 2 * Factorial_Number (1)

= 8 * 7 * 6 * 5 * 4 * 3 * 2 * 1

= **40320**

Thank you for Visiting Our Blog

## Share your Feedback, or Code!!