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.
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
}
...
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)
{
...
}
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
...
}
...
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);
...
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!
1. Program Faktorial Java dengan For Loop
2. Program Faktorial Java dengan While Loop
3. Program Faktorial Java Rekursif
4. Program Faktorial Java dengan Input Data
5. Program Java Menampilkan Deret Faktorial