0
Teknik perulangan dengan rekursi ini cukup unik. Teknik ini memanggil dirinya sendiri untuk melakukan perulangan. Perulangan akan berhenti jika variabel yang diulang pada saat proses rekursi sudah tidak terpenuhi. Teknik rekursi sangat bermanfaat terutama pada kasus-kasus seperti pengurutan data, tree, dan graph.



Pembahasan teknik rekursi dimulai dari aturan dan bagaimana proses rekursi berjalan. Seperti halnya perulangan dengan teknik yang lainnya, pada teknik rwkursi terdapatpengontrol yang bertugas untuk menentukan kapan sebuah proses rekursi berakhir.
Berikut contoh dari program rekursi:

package perulangan.rekursi;
public class PerulanganRekursi {
    static int factorial(int n){
        if(n==0)
            return 1;
        else
            return n*factorial (n-1);
    }
    public static void main(String[] args) {
        int a=5;
       
        System.out.println("nilai factorial dari "+a+" adalah "+factorial(a));
    } 
}

Hasil saat dijalankan
 
Terdapat sebuah pernyataan kondisional if(b==0), yang berfungsi untuk menghentikan proses rekursi. Jika nilai b==0, rekursi akan dihentikan.
Selanjutnya, perhatikan seluruh aliran kode proses rekursif. Jika method factorial dengan nilai 5 dipanggil, proses rekurdi akan dilakukan. Karena 5 tidak termasuk dengan 0, kondisional else diambil dan 5*factorial(5-1) terelsekusi. Dengan demikian, nilai variabelnya menjadi 4. Setelah itu, method factorial dengan nilai 4 dipanggil. Karena 4 tidak sama dengan 0, kondisional else akan dieksekusi. Begitu seterusnya sampai nilai b==0. Pada nilai b==0 proses rekursi akan berhenti dan mengambilkan nilai b=1. Kemudian, nilai b=1 akan memanggil kembali nilai dari tiap method sebelumnya untuk dibalikan sehingga nilai total yang sudah dikalikan menjadi 1*1*2*3*4*5=120.

Mungkin timbul pertanyaan di benak kita, mengapa nilai 1 dikembalikan pada saat b==0(return 1)???. Jika nilai 0 dikembalikan pada saat b==0(return 0), tentu hasil dari program tersebut 0*1*2*3*4*5=0.
Berikut adalah gambaran yang menjelaskan alur rekursi.
 

Dari gambat diatas dilihat bagaimana proses rekursi berjalan. Pengontrol dari perulangan rekursi di atas adalah perintah opsional if(b==0). Jika perintah opsional tersebut bernilai true, rekursi akan berhenti.

Post a Comment

Tolong berikan saran atau kritik kepada kami, dan jangan lupa bertanya apabila ada yang tidak pahami dalam tutorial artikel ini. Gunakanlah kata-kata yang sopan??