Java Program to Find the Factorial of a Number

This article covers a program in Java that finds and prints the factorial of a number. The factorial of a number n is calculated as n * (n-1) * (n-2) * ... * 1. For example, the factorial of 5 is 5*4*3*2*1 or 120.

Find the factorial of a number in Java using the for loop

The question is: write a Java program to find the factorial of a number. The number must be received by the user at the runtime of the program. The answer to this question is the program given below:

import java.util.Scanner;

public class CodesCracker
{
   public static void main(String[] args)
   {
      int num, i, fact=1;
      Scanner s = new Scanner(System.in);
      
      System.out.print("Enter a Number: ");
      num = s.nextInt();
      
      for(i=num; i>=1; i--)
      {
         fact = fact*i;
      }
      
      System.out.println("\nFactorial Result = " +fact);
   }
}

The sample run of the above Java program with user input 5 is shown in the snapshot given below:

Java Program find factorial of number

The above program can also be created in this way:

import java.util.Scanner;

public class CodesCracker
{
   public static void main(String[] args)
   {
      int fact=1;
      Scanner s = new Scanner(System.in);
      
      System.out.print("Enter a Number: ");
      int num = s.nextInt();
      
      for(int i=num; i>=1; i--)
         fact = fact*i;
      
      System.out.println("\nFactorial of " +num+ " is " +fact);
   }
}

Here is its sample run with the same user input as the previous program's sample run:

java find factorial of a number

Find the factorial of a number in Java using the while loop

This program does the same job as the previous one, but was created using the while loop instead of the for

import java.util.Scanner;

public class CodesCracker
{
   public static void main(String[] args)
   {
      int fact=1;
      Scanner s = new Scanner(System.in);
      
      System.out.print("Enter a Number: ");
      int num = s.nextInt();
      
      int i = num;
      while(i>=1)
      {
         fact = fact*i;
         i--;
      }
      
      System.out.println("\nFactorial of " +num+ " is " +fact);
   }
}

The above program produces the same output as the previous program. In the above program, the following two statements:

fact = fact*i;
i--;

can also be replaced with a single statement given below:

fact = fact*i--;

In the above statement, the i-- means the current value of i gets used and then decremented because of a post-increment (--) operator used.

Find the factorial in Java using a function

This program is created using a user-defined function named factorial() that takes an argument and returns the factorial result of its argument.

import java.util.Scanner;

public class CodesCracker
{
   public static void main(String[] args)
   {
      Scanner s = new Scanner(System.in);
      
      System.out.print("Enter a Number: ");
      int num = s.nextInt();
      
      System.out.println("\nFactorial of " +num+ " is " +factorial(num));
   }
   
   public static int factorial(int n)
   {
      int fact = 1;
      for(int i=n; i>=1; i--)
         fact = fact*i;
      return fact;
   }
}

Find the factorial of a number in Java using recursion

Here is another Java program I've created to find the factorial of a number using recursion, or a recursive function. A recursive function is a function where the function calls itself from inside its definition.

import java.util.Scanner;

public class CodesCracker
{
   public static void main(String[] args)
   {
      Scanner s = new Scanner(System.in);
      
      System.out.print("Enter a Number: ");
      int num = s.nextInt();
      
      System.out.println("\nFactorial of " +num+ " is " +factorial(num));
   }
   
   public static int factorial(int n)
   {
      if(n>=1)
         return (n * factorial(n-1));
      else
         return 1;
   }
}

Again, the output produced by this Java program is the same as that of the previous program.

Same Program in Other Languages

Java Online Test


« Previous Program Next Program »


Liked this post? Share it!