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
0 komentar
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??