Rekursif di Java

Metoda rekursif adalah metoda mengulang dirinya sendiri. Metoda ini memanggil dirinya sendiri untuk melakukan proses berulang-ulang. Kasus sederhana yang sering muncul adalah proses berulang-ulang menghitung hasil factorial. Misalnya adalah factorial dari 5 adalah 1 x 2 x 3 x 4 x 5. Dari proses itu kita ketahui bahwa untuk menghitung factorial 5 manualnya seperti 1 x 2 = 2, lalu hasil 2 ini dikalikan 3 sehingga hasilnya adalah 6, lalu hasil 6 ini dikalikan lagi dengan 4 sehingga hasilnya adalah 36, lalu hasil 36 ini dikalikan dengan 5 sehingga hasilnya adalah 120.
Nah inilah yang dinamakan rekursif, hasil dari proses awal digunakan lagi untuk proses berikutnya sampai batas yang diinginkan.
Langsung aja ya ke javanya :

class faktorial{
int fak_rekursif(int n){
int Hasil;

if(n==1 || n==0) return 1;

Hasil = fak_rekursif(n-1) * n;

return Hasil;
}

int fak_perulangan(int n){
int t;
int Hasil;

Hasil = 1;

for(t=1; t<=n; t++)
Hasil *= t;

return Hasil;
}
}



class faktorialDemo{
public static void main(String args[]){
faktorial fak = new faktorial();

System.out.println("Hitung Faktorial dengan Rekursif");
System.out.println("Faktorial dari 4 adalah : "+ fak.fak_rekursif(4));

System.out.println("Hitung Faktorial dengan Perulangan");
System.out.println("Faktorial dari 4 adalah : "+ fak.fak_perulangan(4));
}
}

Kode diatas saya selipkan juga factorial dengan menggunakan perulangan. Pada proses factorial dengan perulangan, awalnya adalah hasil factorial bernilai 1 dan terus bertambah dengan perkalian tiap kenaikan t dari perulangan.

Berbeda dengan factorial dengan menggunakan metoda rekursif. Code yang menunjukan bahwa proses rekursif adalah :
Hasil = fak_rekursif(n-1) * n;
Nilai dari variable Hasil ini didapat dari pemanggilan terlebih dahulu fungsi fak_rekursif dengan parameter mundur. Jadi secara tidak langsung, code ini menghitung terlebih dahulu factorial dari yang kecil. Misalnya adalah factorial 5, maka code tadi itu menghitung.
Hasil = fak_rekursif(1-1) * 1; , memanggil fungsi fak_rekursif(0)
Hasil = fak_rekursif(2-1) * 2; , memanggil fungsi fak_rekursif(1)
Hasil = fak_rekursif(3-1) * 3; , memanggil fungsi fak_rekursif(2)
Hasil = fak_rekursif(4-1) * 4; , memanggil fungsi fak_rekursif(3)
Hasil = fak_rekursif(5-1) * 5; , memanggil fungsi fak_rekursif(4)

Karena proses awalnya adalah fak_rekursif(5-1)*5; , maka otomatis fungsi itu memanggil fungsi fak_rekursif (4), di dalam fungsi fak_rekursif(4), ada proses pemanggilan fungsi fak_rekursif(4-1)*4, yaitu fungsi fak_rekursif(3). Dan seterusnya.
Moga jelas ya, jadi proses rekursif adalah proses pemanggilan dirinya sendiri.

0 komentar:

Poskan Komentar