Ayam Koding

Belajar Algoritme & Pemrograman

Program Java Menentukan Nilai Faktorial (2024)

Updated on 2023-01-13

Hai sobat ayamkoding, pada artikel kali ini kita akan membahas cara membuat program java untuk menentukan nilai faktorial.

Faktorial merupakan hasil dari semua perkalian bilangan bulat positif yang ada di bawah bilangan faktorial dengan bilangan itu sendiri.

Faktorial dilambangkan dengan tanda (!). Jadi, kita juga bisa melambangkan dalam bentuk n!, di mana n adalah suatu bilangan.

Misalnya, nilai dari 5! adalah 120, nilai ini bisa kita dapatkan dengan cara sebagai berikut:

5 x 4 x 3 x 2 x 1 = 120

Dari nilai di atas, didapatkan bahwa nilai faktorial 5 adalah 120. Singkatnya, faktorial adalah hasil kali semua bilangan bulat yang ada dibawah bilangan faktorial dengan bilangan itu sendiri.

Faktorial dapat ditentukan dengan menggunakan rumus:

n! = n x (n-1)!

n = bilangan bulat (1, 2, 3, …)

Lantas, bagaimana cara menerapkan program faktorial menggunakan bahasa pemrograman Java?

Sebenarnya, ada banyak cara untuk menentukan program faktorial ini mulai dengan menggunakan for loop, while loop, fungsi rekursif, dan lainnya.

Mari kita bahas.

# Cara 1: Menggunakan For

Kita akan menggunakan perulangan for untuk mencari nilai faktorial dari suatu method.

/* --- Faktorial Menggunakan For Loop --- */
public class Faktorial
{
  private static int nilaiFaktorial(int x)
  {
    if (x == 0 || x == 1) return 1;
    int value = 1;
    for (int i = 1; i <= x; i++){
      value *= i;
    }
    return value;
  }

  public static void main(String[] args){
    System.out.println("Program Faktorial Menggunakan For");
    System.out.println("---------------------------------");
    System.out.println(nilaiFaktorial(0)); // 1
    System.out.println(nilaiFaktorial(2)); // 2
    System.out.println(nilaiFaktorial(3)); // 6
    System.out.println(nilaiFaktorial(4)); // 24
  }
}

Hasil Output:

Program Faktorial Menggunakan For
---------------------------------
1
2
6
24

Penjelasan

1. Inisialisasi nama class Faktorial

public class Faktorial 
{
  ...
}

2. Membuat method dengan nama nilaiFaktorial. Method ini akan menggunakan return dengan tipe data int.

private static int nilaiFaktorial(int x) {
 ...
}

Selanjutnya, di dalam method nilaiFaktorial() terdapat berbagai macam kode.

    ...
    if (x == 0 || x == 1) return 1;
    int value = 1;
    for (int i = 1; i <= x; i++){
      value *= i;
    }
    return value;
    ...

Jika nilai dari parameter x adalah 0 atau 1 maka akan menghasilkan nilai 1.

Jika selain nilai tersebut maka akan dilakukan perulangan menggunakan perhitungan faktorial.

Dimulai dari inisialisasi nilai dari 1, kemudian dilakukan perulangan mulai dari 1 hingga nilai x dengan menggunakan increment. Pada perulangan, variable value akan dilakukan perkalian berulang.

3. Deklarasi main method untuk yang akan dijalankan program.

public static void main(String[] args){ ... }

Di dalam, main method tersebut kita akan melakukan pemanggilan method nilaiFaktorial dengan nilai parameter yang berbeda.

Di mana setiap nilai dari nilaiFaktorial akan kita berikan output menggunakan method System.out.println() untuk ditampilkan pada layar.

  ...
  public static void main(String[] args){
    System.out.println("Program Faktorial Menggunakan For");
    System.out.println("---------------------------------");
    System.out.println(nilaiFaktorial(0)); // 1
    System.out.println(nilaiFaktorial(2)); // 2
    System.out.println(nilaiFaktorial(3)); // 6
    System.out.println(nilaiFaktorial(4)); // 24
  }
  ...

# Cara 2: Menggunakan While

Sama seperti penggunaan perulangan for di atas, kita akan menggunakan perulangan while.

Sebenarnya hampir mirip dengan for, hanya ketika menggunakan while loop dieksekusi ketika value true.

/* --- Faktorial Menggunakan While --- */
public class Faktorial
{
  private static int nilaiFaktorial(int angka)
  {
    if (angka == 0 || angka == 1) return 1;
    int value = 1;
    while (angka > 1) {
      value = value * angka;
      angka--;
    }
    return value;
  }

  public static void main(String[] args)
  {
    System.out.println("Program Java Faktorial Menggunakan While");
    System.out.println("----------------------------------------");
    System.out.println(nilaiFaktorial(0)); // 1
    System.out.println(nilaiFaktorial(1)); // 1
    System.out.println(nilaiFaktorial(2)); // 2
    System.out.println(nilaiFaktorial(3)); // 6
    System.out.println(nilaiFaktorial(5)); // 120
  }
}

Hasil Output:

Program Java Faktorial Menggunakan While
----------------------------------------
1
1
2
6
120

Penjelasan

1. Deklarasi nama class Faktorial.

public class Faktorial
{
  ...
}

2. Mendeklarasikan method dengan nama nilaiFaktorial dengan return value bernilai int. Method ini juga mempunyai parameter angka yang bertipe data integer.

private static int nilaiFaktorial(int angka)
{
  ...
}

3. Di dalam method nilaiFaktorial terdapat perintah-perintah untuk melakukan perhitungan faktorial.

    ...
    if (angka == 0 || angka == 1) return 1;
    int value = 1;
    while (angka > 1) {
      value = value * angka;
      angka--;
    }
    return value;
    ...

Seperti kode tersebut, jika nilai dari argument 0 atau 1 maka akan mendapatkan return nilai 1.

Sedangkan jika selain itu akan dilakukan perhitungan. Mulai dari inisialisasi value dari angka 1 kemudian dilakukan looping dengan menggunakan while untuk perkalian setiap nilai.

Nilai dari parameter angka akan dilakukan decrement menggunakan tanda -- dan nilai akan dibalikan dalam bentuk value.

4. Deklarasi method main, bagian ini dijalankan oleh program dan menjadi tempat pemanggilan method nilaiFaktorial bersama dengan nilai dari parameter. Di samping itu, dengan

public static void main(String[] args)
{
  ...
}

# Cara 3: Program Java Faktorial dengan Rekursif

Selain menggunakan perulangan for atau while, kita juga bisa menggunakan metode rekursif untuk menghitung nilai faktorial.

Rekursif pada program java faktorial ini merupakan proses suatu fungsi memanggil dirinya sendiri.

Secara umum, keuntungan dari penggunaan rekursif adalah kode lebih pendek, namun umumnya lebih lambat dalam pemrosesan dan lebih memakan banyak memori dibandingkan dengan metode non-rekursif.

/*--- Program Faktorial Dengan Rekursif ---*/
public class FaktorialRekursif
{
  private static int nilaiFaktorial(int x)
  {
    if (x == 0 || x == 1) return 1;
    return x * nilaiFaktorial(x - 1);
  }

  public static void main(String[] args)
  {
    System.out.println("Program Java Faktorial dengan Rekursif");
    System.out.println("--------------------------------------");
    System.out.println(nilaiFaktorial(1)); // 1
    System.out.println(nilaiFaktorial(4)); // 24
    System.out.println(nilaiFaktorial(5)); // 120
    System.out.println(nilaiFaktorial(7)); // 5040
  }
}

Hasil Output:

$ javac FaktorialRekursif.java
$ java FaktorialRekursif

Program Java Faktorial dengan Rekursif
--------------------------------------
1
24
120
5040

Penjelasan

1. Deklarasi dari class FaktorialRekursif

public class FaktorialRekursif
{
  ...
}

2. Deklarasi method nilaiFaktorial yang berisi return untuk pemanggilan rekursif atau fungsi itu sendiri.

Jika nilai argument x adalah 0 atau 1 maka otomatis akan mendapatkan nilai faktorial 1.

Sedangkan jika bukan itu maka akan dilanjutkan perhitungan faktorial dengan menggunakan rekursif.

  ...
  private static int nilaiFaktorial(int x)
  {
    if (x == 0 || x == 1) return 1;
    return x * nilaiFaktorial(x - 1);
  }
  ...

3. Deklarasi method main pada program java untuk print nilai dari faktorial yang ada.

Di dalam method main ini terdapat pemanggilan fungsi nilaiFaktorial yang berisi nilai dari argument.

...
public static void main(String[] args)
{
  ...
  System.out.println(nilaiFaktorial(1)); // 1
  System.out.println(nilaiFaktorial(4)); // 24
  ...
}
...

# Cara 4: Input Nilai

Selanjutnya kita akan melakukan input nilai, seberapa banyak nilai faktorial yang akan dicetak pada output program.

Kali ini kita akan menggunakan pemanggilan class Scanner dari java.util

Kemudian, dilakukan perhitungan faktorial yang telah ditentukan jumlahnya.

Kali ini kita akan menggunakan perulangan while agar lebih mudah dipahami.

/*--- Program Faktorial dengan Input Nilai ---*/
import java.util.Scanner;

public class Faktorial
{
  public static void main(String[] args)
  {
    System.out.println("Program Faktorial Input Dengan Java");
    System.out.println("-----------------------------------");

    Scanner sc = new Scanner(System.in);
    System.out.print("Masukkan berapa banyak faktorial: ");
    int x = sc.nextInt();
    sc.close();

    if (x < 0){
      System.out.println("Input yang kamu masukkan bukan bilangan cacah.");
    }

    if (x == 0 || x == 1){
      System.out.println("Nilai faktorial adalah 1");
    }

    int hasilFaktorial = 1;
    while (x > 1){
      hasilFaktorial *= x;
      x--;
    }
    System.out.println("Nilai faktorial adalah " + hasilFaktorial);
  }
}

Contoh Hasil Output:

$ javac Faktorial.java 
$ java Faktorial

Input 4

Program Faktorial Input Dengan Java
-----------------------------------
Masukkan berapa banyak faktorial: 4
Nilai faktorial adalah 24

Input 7

Program Faktorial Input Dengan Java
-----------------------------------
Masukkan berapa banyak faktorial: 7
Nilai faktorial adalah 5040

Setelah kita menjalankan program ketika kita melakukan input nilai 4 maka akan mendapatkan nilai 24 karena 4 x 3 x 2 x 1 = 24.

Lantas, ketika kita melakukan input nilai 7 maka akan mendapatkan nilai 5040 karena hasil perhitungan dari 7 x 6 x 5 x 4 x 3 x 2 x 1 = 5040

Penjelasan

1. Pemanggilan class Scanner untuk input data dari banyaknya bilangan faktorial yang akan diproses.

import java.util.Scanner;
...

2. Deklarasi nama class Faktorial sesuai dengan nama program Faktorial.java

public class Faktorial
{
   ...
}

3. Deklarasi method main pada program yang akan dijalankan.

  ...
  public static void main(String[] args)
  {
    ...
  }
  ...

4. Ini akan ditampilkan pada terminal atau output program.

    ...
    System.out.println("Program Faktorial Input Dengan Java");
    System.out.println("-----------------------------------");
    ...

5. Perintah di bawah ini digunakan untuk input berapa banyak faktorial yang akan dihitung.

Kali ini saya akan menggunakan class Scanner yang di-assign ke dalam variable sc.

Kemudian, banyak faktorial yang akan kita hitung akan disimpan ke dalam variable x dengan tipe data integer.

    ...  
    Scanner sc = new Scanner(System.in);
    System.out.print("Masukkan berapa banyak faktorial: ");
    int x = sc.nextInt();
    sc.close();
    ...

6. Jika nilai input kamu kurang dari 0 maka pada output akan muncul bahwa bukan bilangan cacah.

    ...
    if (x < 0){
      System.out.println("Input yang kamu masukkan bukan bilangan cacah.");
    }
    ...

7. Jika input yang diberikan adalah 0 atau 1 maka akan muncul bahwa nilai faktorial adalah 1.

    ...
    if (x == 0 || x == 1){
      System.out.println("Nilai faktorial adalah 1");
    }
    ...

8. Perintah ini digunakan untuk melakukan perhitungan dan mencetaknya langsung. Dimulai dari inisialisasi hasilFaktorial mulai dari 1.

Kemudian dilakukan perulangan perkalian decrement hingga perulangan while sudah tidak true.

Selanjutnya, hasil dari perkalian faktorial tersebut akan dikeluarkan pada output.

    ...
    int hasilFaktorial = 1;
    while (x > 1){
      hasilFaktorial *= x;
      x--;
    }
    System.out.println("Nilai faktorial adalah " + hasilFaktorial);
    ...

# Cara 5: Deret Faktorial

Kemudian kita akan mencoba mendapatkan faktorial dalam bentuk deret.

Jadi, ketika kamu memasukkan input bilangan maka akan mendapatkan sepanjang deret yang dimasukkan.

/* --- Program Deret Faktorial --- */
import java.util.Scanner;

public class DeretFaktorial
{
  public static void main(String[] args)
  {
    System.out.println("Deret Faktorial");

    Scanner sc = new Scanner(System.in);
    System.out.print("Masukkan banyak angka: ");
    int totalNumber = sc.nextInt();
    sc.close();

    for (int i = 0; i <= totalNumber; i++){
      
      if (i == 0 || i == 1){
        System.out.print(1);
        System.out.print(" ");
      } else {
        int value = 1;
        for (int x = 1; x <= i; x++){
          value *= x;
        }
        System.out.print(value);
        System.out.print(" ");
      }
    }
    System.out.print("\n");
  }
}

Contoh Output:

$ javac DeretFaktorial.java 
$ java DeretFaktorial
Deret Faktorial
Masukkan banyak angka: 5
1 1 2 6 24 120 
Deret Faktorial
Masukkan banyak angka: 10
1 1 2 6 24 120 720 5040 40320 362880 3628800

Penjelasan Program:

1. Melakukan import untuk class Scanner dari java.util.*

import java.util.Scanner;

2. Deklarasi class DeretFaktorial pada program java.

public class DeretFaktorial
{
  ...
}

3. Deklarasi main method pada program java.

  ...
  public static void main(String[] args)
  {
    ...
  }

4. Digunakan untuk melakukan input banyaknya faktorial menggunakan class Scanner.

Input tersebut disimpan dalam variable totalNumber dalam bentuk integer.

    ...
    Scanner sc = new Scanner(System.in);
    System.out.print("Masukkan banyak angka: ");
    int totalNumber = sc.nextInt();
    sc.close();
    ...

5. Perintah ini digunakan untuk melakukan perulangan dengan for untuk mendapatkan deret faktorial.

Jika nilai input 0 maka akan muncul nilai 1 dan jika selain itu maka akan dilakukan perhitungan perkalian faktorial.

    ...
    for (int i = 0; i <= totalNumber; i++){
      
      if (i == 0 || i == 1){
        System.out.print(1);
        System.out.print(" ");
      } else {
        int value = 1;
        for (int x = 1; x <= i; x++){
          value *= x;
        }
        System.out.print(value);
        System.out.print(" ");
      }
    }
    System.out.print("\n");
   ...

Nah, demikian penjelasan mengenai cara membuat program java untuk menentukan nilai faktorial yang bisa kamu coba.

Silahkan jika ada yang kurang jelas untuk ditanyakan ya.

Terima kasih. Happy coding!

Lampiran Kode Program

1. Program Faktorial Java dengan For Loop

Program Java Faktorial dengan For Loop

2. Program Faktorial Java dengan While Loop

Program Java Faktorial dengan While Loop

3. Program Faktorial Java Rekursif

Program Java Faktorial dengan Rekursif

4. Program Faktorial Java dengan Input Data

Program Java Faktorial dengan Input Nilai

5. Program Java Menampilkan Deret Faktorial

Program Java Deret Faktorial