When you multiply a positive integer by all the integers smaller than that positive integer, you get its factorial. This article will explain what is factorial and how to write a factorial program in Java with examples.
For example, factorial of 4 is 4! = 1*2*3*4 = 24 and factorial of 7 is 7! = 7 * 6 * 5 * 4 * 3 * 2 * 1 which equals to 5040.
By default, the factorial of 0 is 1, and the Factorial of a negative number is not defined.
In mathematics, a factorial is denoted by “!“. Therefore, the factorial of n is given by the formula
n! = n x (n-1) x (n-2) x (n-3) … x1.
Factorial can also be calculated using Euler’s gamma function which is
n! = γ(n+1) = \(∫_0^∞\) xn e-x dx
Write a Java program to find the factorial of a positive number. If number is negative print the message otherwise find the factorial of the number.
There are several ways to find factorial of a number in Java. Let’s look at all different approaches to program this function:
- Factorial Program in Java using For Loop
- Factorial Program in Java using While Loop
- Factorial Program in Java using Recursion
In this method, we run a loop for N times and multiply all the N positive numbers.
Here is the source code of the Java program to print the factorial of a given number using for loop. The Java program is successfully compiled and run on a Windows system. The program output is also shown below.
/* * Java program to find the factorial of a given number using for loop. */ import java.util.Scanner; public class Factorial { public static void main(String[] args) { int n, fact = 1; Scanner s = new Scanner(System.in); System.out.print("Enter the Number: "); n = s.nextInt(); for(int i = 1; i <= n; i++) { fact = fact * i; } System.out.println("Factorial of "+n+" is "+fact); } }
1. Take a number and store it in ‘n’.
2. Check whether it is a valid number or not.
3. If not a valid number, print the message.
4. Else, run a for loop from 1 to N.
5. Take a variable ‘fact’ and store all the multiplication of N numbers in it.
6. Print the factorial value.
Example:
Take N=8, check whether N is less than 0. If it is less than zero, print message. Now we run a for loop from N=1 to N=8 and multiply all the numbers. Store the multiplication of numbers in a variable and print the answer as 40320.
Time Complexity: O(N)
Since we are running for loop for N times, it’s time complexity is O(N).
Space Complexity: O(1)
Since we are not using constant space for computation, it’s space complexity is O(1).
Here is the runtime output of a Java program to find the factorial of a number when the number entered by the user is “8”.
Enter the Number: 8 Factorial of 8 is 40320
In this method we run a while loop for N times and multiply all the N positive numbers.
Here is source code of the java program to print the factorial of a given number using while loop (iterative solution). The Java program is successfully compiled and run on a Linux system. The program output is also shown below.
// Java program to calculate factorial of a number using while loop import java.util.Scanner; public class Factorial { public static void main(String[] args) { int n; System.out.println("Enter the number: "); Scanner s = new Scanner(System.in); n = s.nextInt(); long fact = 1; int i = 1; while(i<=n) { fact = fact * i; i++; } System.out.println("Factorial of "+n+" is: "+fact); } }
1. Take a number from the user and store it in variable ‘n’.
2. The program initializes a long variable ‘fact‘ to 1 and an integer variable ‘i‘ to 1.
3. The program enters a while loop that continues until ‘i‘ is less than or equal to ‘n‘.
4. Inside the loop, the program multiplies the ‘fact‘ variable by ‘i‘ and stores the result in ‘fact‘. Then it increments ‘i‘ by 1.
5. After the loop, the program prints the value of ‘fact‘ as the factorial of the input number ‘n‘, along with a message.
Time Complexity: O(N)
Since we are running for loop for N times,it’s time complexity is O(N).
Space Complexity: O(1)
Since we are not using constant space for computation, it’s space complexity is O(1).
In this case, we enter the number “7” to determine the factorial.
Enter the number: 7 Factorial of 7 is: 5040
It is a recursive problem and the solution of factorial of N is given by expression
fact(n) = n*fact(n-1)
In above expression, we get solution of (n-1)! by recursive function and when we multiply it with n, we get result of n!.
Here is the source code of the Java Program to Find Factorial Value With Using Recursion. The Java program is successfully compiled and run on a Windows system. The program output is also shown below.
/* * Java program to find the factorial of a number using Recursion */ import java.util.Scanner; public class Factorial { public static void main(String[] args) { int n, mul; Scanner s = new Scanner(System.in); System.out.print("Enter the number:"); n = s.nextInt(); Factorial obj = new Factorial(); mul = obj.fact(n); System.out.println("Factorial of "+n+" :"+mul); } int fact(int x) { if(x > 1) { return(x * fact(x - 1)); } return 1; } }
1. Take a number from the user and store it in variable ‘n’.
2. The program calls the ‘fact‘ method of the Factorial object and passes ‘n‘ as an argument. The return value of the method is stored in an integer variable ‘mul‘.
3. It prints the value of ‘mul‘ as the factorial of the input number ‘n‘, along with a message.
4. The ‘fact‘ method takes an integer ‘x‘ as an argument and returns the factorial of ‘x‘.
5. Inside the ‘fact‘ method, there is a recursive call to itself, which multiplies the current value of ‘x‘ with the return value of the ‘fact‘ method called with ‘x-1‘ as an argument until ‘x‘ becomes 1, and then returns 1.
Time Complexity: O(N)
Since we are calling function for N times(N,N-1,N-2….3,2,1), time complexity is O(N).
Space Complexity: O(N)
In the context of recursion, a memory tree is created during execution, taking into account that
the space complexity of the tree is O(N).
Here is the runtime output of a Java program to find the factorial of a number when the number entered by the user is “9”.
Enter the number: 9 The Factorial of 9 is 362880
To practice programs on every topic in Java, please visit “Programming Examples in Java”, “Data Structures in Java” and “Algorithms in Java”.
- Check Java Books
- Check Programming Books
- Apply for Java Internship
- Apply for Computer Science Internship
- Practice Programming MCQs