Belajar Algoritma Rekursif pada Java


Assalmaulaikum Warahmatullahi Wabarakatuh.

Pada postingan kali ini saya akan memperkenalkan sebuah algoritma yang sering atau jarang digunakan oleh programmer, bernama Rekursif, Rekursif sendiri merupakan algoritma yang memungkinkan sebuah method untuk memanggil fungsinya sendiri, dengan begitu program akan mengalami looping, karena jika sebuah method memanggil fungsinya sendiri, maka statement didalamnya akan dieksekusi ulang.

Perlu kalian ingat, supaya tidak terjadi Infinitely Looping atau Perulangan terus menerus, kita perlu menambahkan sebuah statement kondisi dimana program akan berakhir jika pembatasnya sudah terpenuhi.

Belajar Algoritma Rekursif pada Java

Algoritma Rekursif jarang dugunakan oleh seorang programmer untuk kondisi perulangan karena sulit dan juga ribet dibandingkan dengan syntax perulangan seperti while, do-while dan for loops. Tetapi walaupun sulit, kita sebagai seorang programmer harus terus belajar dan belajar dengan begitu semakin banyak masalah/problem yang kita terima, semakin mudah juga kita untuk mencari solusinya.

Materi Yang Harus Kalian Pelajari Sebelumnya:

Belajar Algoritma Rekursif pada Java

Sebenarnya untuk belajar algoritma Rekursif tidaklah sulit, kita hanya perlu memahami sedikit demi sedikit cara kerjanya dengan begitu pasti kita bisa menerapkannya pada program yang kita buat, walaupun algoritma tersebut masih jarang digunakan.

Selanjutnya kita akan membuat program sederhana yang menimgilkan beberapa deret angka dari 1 simgai 10, serta jangan lupa untuk menggunakan sifat/kata kunci static pada variable atau method.

Contoh sederhana penggunaanRekursif:

package WILDAN_TECHNO_ART;

public class belajar_rekursif {
    
    public static void main(String[] args){
        //Memanggil Method Static cetakAngka
        cetakAngka(1); //Nilai Defaultnya 1
    }
    
    static void cetakAngka(int angka){
        if(angka <=10){ //Kondisi Dimana Program Akan Berhenti
            System.out.println(angka);
            //Nilai Pada Parameter Angka Akan Bertambah 1 Setiap Looping
            cetakAngka(++angka);
        }
    }
}

Demo:

Contoh sederhana algoritma Rekursif

Pada contoh program tersebut, setelah fungsi System.out.println(angka); dijalankan, method tersebut akan mengulang kembali statement sebelumnya dengan parameter didalamnya bertambah 1 setiap perulangan itu terjadi simgai kondisi menjadi false dan program berhenti.

Mudah bukan, jika kalian sudah memahaminya, kita lanjut pada contoh berikutnya, selanjutnya kita akan mencoba menggunakan Array, didalam array tersebut terdapat beberapa data yang akan kita timgilkan pada layar.

package WILDAN_TECHNO_ART;

public class belajar_rekursif {
    
    static String[] mahasiswa = {"Wildan", "Taufan", "Adibil", "Adam"};
    
    public static void main(String[] args){
        getMahasiswa(0);
    }
    
    static void getMahasiswa(int absensi){
        if(absensi < mahasiswa.length){
            System.out.println("Absensi No-"+absensi+" Bernama: "+mahasiswa[absensi]);
            getMahasiswa(++absensi);
        }
    }
}

Demo:

Contoh kedua Algoritma Rekursif meggunakan Array

Jika kalian sudah mulai paham mengenai pengertian serta fungsi Rekursif pada java, pada contoh terakhir ini kita akan membuat program yang lebih kompleks, yaitu menimgilkan Segitiga/Piramid dengan simbol (*).

Biasanya untuk membuat program tersebut menggunakan syntax perulangan seperti for loops, tapi kali ini kita akan mencoba menggunakan Rekusif, pada class java kalian, masukan souce code berikut ini:

package WILDAN_TECHNO_ART;

import java.util.Scanner;

public class belajar_rekursif {
    
    static int baris = 5;
    
    public static void main(String[] args){
        Scanner input = new Scanner(System.in);
        System.out.print("Masukan Jumlah Baris: ");
        baris = input.nextInt();
        printPyramid(0);
    }

    static void printPyramid(int i) {
        printSpasi(0, i);
        printBintang(baris, i);
        System.out.println();

        if (++i < baris)
            printPyramid(i);
    }

    static void printSpasi(int j, int i) {
        if (j < baris - i - 1) {
            System.out.print(" ");
            printSpasi(j + 1, i);
        }
    }

    static void printBintang(int k, int i) {
        if (k > baris - i - 1) {
            System.out.print("* ");
            printBintang(k - 1, i);
        }
    } 
}

Demo:

Mencetak Piramida Menggunakan Rekusif

Pada Contoh terakhir memang cukup sulit untuk membuat Piramid menggunakan Rekusif dibandingkan dengan menggunakan for loops, tetapi walaupun begitu, jika kalian bersungguh sungguh untuk mempelajarinya, pasti bisa, yang terpenting adalah kemauan.

Coba kalian pahami sedikit demi sedikit source code tersebut, dan buatlah experiment sendiri dengan menggunakan Rekursif agar lebih menguasai algoritmanya. Semoga bermanfaat, Mohon maaf bila ada kesalahan.

Wassalamualaikum Warahmatullahi Wabarakatuh.

Wildan M Athoillah
Wildan M Athoillah Blogger dan spesialis pembuat aplikasi android.