Pada tutorial ini kita akaan mempelajari tentang apa itu rekursif pada java beserta cara kerjanya. Bila pada program-program yang telah kita bahas sebelumnya umumnya disusun sebagai method yang memanggil satu sama lain secara hierarkis. Untuk beberapa masalah, ada baiknya memanggil method itu sendiri. Method itu dikenal sebagai method rekursif. Method rekursif dapat memanggil dirinya baik secara langsung atau tidak langsung melalui method lain.
Konsep Rekursif Pada Java
Pendekatan pemecahan masalah rekursif memiliki sejumlah elemen yang sama. Ketika fungsi rekursif pada java ini dipanggil untuk memecahkan masalah, sebenarnya hanya mampu menyelesaikan kasus yang paling sederhana, atau kasus dasar. Jika method ini disebut dengan kasus dasar, method itu mengembalikan hasil. Jika method ini disebut dengan masalah yang lebih kompleks, method tersebut biasanya membagi masalah menjadi dua bagian konseptual bagian yang diketahui cara melakukannya dan bagian yang tidak diketahui bagaimana melakukannya. Untuk membuat rekursi menjadi layak, bagian yang terakhir harus menyerupai masalah aslinya, tetapi versi yang sedikit lebih sederhana atau lebih kecil. Karena masalah baru ini terlihat seperti masalah asli, method ini memanggil salinan baru dari dirinya untuk bekerja pada masalah yang lebih kecil — ini disebut sebagai panggilan rekursif dan juga disebut langkah rekursi.
Langkah rekursi biasanya mencakup pernyataan pengembalian, karena hasilnya akan digabungkan dengan bagian dari masalah yang diketahui method untuk menyelesaikan untuk membentuk hasil yang akan diteruskan kembali ke pemanggil asli.Langkah rekursi dijalankan sementara pemanggilan method asli masih aktif (mis., Belum selesai dieksekusi). Ini dapat menghasilkan lebih banyak panggilan rekursif karena method ini membagi setiap sub-masalah baru menjadi dua bagian konseptual. Agar rekursi akhirnya berakhir, setiap kali method memanggil dirinya sendiri dengan versi yang lebih sederhana dari
masalah aslinya, urutan masalah yang lebih kecil dan lebih kecil harus menyatu pada kasus dasar. Ketika method mengenali kasus dasar, itu mengembalikan hasil ke salinan method sebelumnya. Urutan pengembalian terjadi sampai pemanggilan method asli mengembalikan
hasil akhir ke pemanggil.
Method rekursif dapat memanggil method lain, yang pada gilirannya membuat panggilan kembali ke method rekursif. Ini dikenal sebagai panggilan rekursif tidak langsung atau rekursi tidak langsung. Misalnya, method A memanggil method B, yang membuat panggilan kembali ke method A. Ini masih rekursi, karena panggilan kedua ke method A dilakukan saat panggilan pertama ke method A aktif — yaitu panggilan pertama ke method A belum selesai dieksekusi (karena sedang menunggu method B untuk mengembalikan hasilnya) dan belum kembali ke pemanggil asli method A.
Untuk lebih memahami konsep rekursi, mari kita lihat contoh yang cukup akrab bagi pengguna komputer — definisi rekursif direktori pada komputer. Komputer biasanya menyimpan file terkait dalam direktori. Direktori dapat kosong, dapat berisi file dan / atau dapat berisi direktori lain (biasanya disebut sebagai subdirektori). Masing-masing subdirektori ini, pada gilirannya, dapat juga berisi file dan direktori. Jika kita ingin membuat daftar setiap file dalam direktori (termasuk semua file dalam subdirektori direktori), kita perlu membuat method yang pertama-tama mendaftar file direktori awal, kemudian membuat panggilan rekursif untuk membuat daftar file di masing-masing subdirektori direktori itu. Kasus dasar terjadi ketika direktori tercapai yang tidak mengandung subdirektori. Pada titik ini, semua file dalam direktori asli telah terdaftar dan tidak perlu rekursi lebih lanjut. (Sumber : Deitel, Deitel edisi 9) Dalam pemrograman, rekursif dapat diimplementasikan pada method. Syarat supaya method rekursi dapat terjadi adalah harus ada kondisi dimana pemanggilan terhadap method itu sendiri berakhir.
Contok Faktorial Rekursif
Kita sudah pernah membuat sebuah algoritma dan program untuk menghitung faktorial dengan iterasi. Sekarang, kita akan membuatnya dengan rekursif. Kita ingat lagi :
Faktorial N dengan N=5 artinya
N! = 5 * 4 * 3 * 2 * 1
Dan faktorial 1 = 1.
Dihitung dengan iterasi dan pernyataan for menjadi sebagai berikut.
faktorial = 1; for (int counter = N; counter>=1; counter--) faktorial = faktorial * counter;
Sekarang kita akan menghitung faktorial secara rekursif. Rumusan umum method faktorial secara rekursif adalah sebagai berikut.
N! = N * (N-1)!
Sebagai contoh, untuk menghitung faktorial dengan N=5.
5! = 5 * 4 * 3 * 2 * 1
5! = 5 * (4 * 3 * 2 * 1)
5! = 5 * 4!
Evaluasi untuk 5! Ditunjukkan pada Gambar 1. Gambar 1 menunjukkan bagaimana urutan pemanggilan rekursif sampai kepada pemanggilan faktorial 1 yang merupakan nilai akhir dengan hasil 1.
Algoritma tersebut dapat kita implementasikan ke dalam program menjadi sebagai berikut.
Sekian artikel kaali ini tentang definisi serta cara kerja rekursif pada java jangan lupa baca artikel saya yang lain tentang method pada java