Dalam tutorial ini, Anda akan belajar tentang fungsi rekursif Java, kelebihan dan kekurangannya.
Di Java, metode yang memanggil dirinya sendiri dikenal sebagai metode rekursif. Dan, proses ini disebut rekursi.
Contoh dunia fisik adalah menempatkan dua cermin paralel saling berhadapan. Objek apa pun di antara mereka akan dipantulkan secara rekursif.
Bagaimana Rekursi bekerja?

Dalam contoh di atas, kami telah memanggil recurse()
metode dari dalam main
metode. (panggilan metode normal). Dan, di dalam metode recurse (), kita kembali memanggil metode recurse yang sama. Ini adalah panggilan rekursif.
Untuk menghentikan panggilan rekursif, kita perlu menyediakan beberapa kondisi di dalam metode. Jika tidak, metode ini akan dipanggil tanpa batas.
Oleh karena itu, kami menggunakan pernyataan if… else (atau pendekatan serupa) untuk menghentikan panggilan rekursif di dalam metode.
Contoh: Faktorial Bilangan Menggunakan Rekursi
class Factorial ( static int factorial( int n ) ( if (n != 0) // termination condition return n * factorial(n-1); // recursive call else return 1; ) public static void main(String() args) ( int number = 4, result; result = factorial(number); System.out.println(number + " factorial = " + result); ) )
Keluaran :
4 faktorial = 24
Dalam contoh di atas, kami memiliki metode bernama factorial()
. Itu factorial()
dipanggil dari main()
metode. dengan variabel angka diteruskan sebagai argumen.
Di sini, perhatikan pernyataannya,
return n * factorial(n-1);
The factorial()
Metode memanggil dirinya sendiri. Awalnya nilai n adalah 4 didalamnya factorial()
. Selama panggilan rekursif berikutnya, 3 diteruskan ke factorial()
metode. Proses ini berlanjut hingga n sama dengan 0.
Ketika n sama dengan 0, if
pernyataan kembali salah maka 1 dikembalikan. Akhirnya, hasil yang terakumulasi diteruskan ke main()
metode.
Kerja Program Faktorial
Gambar di bawah ini akan memberi Anda gambaran yang lebih baik tentang bagaimana program faktorial dijalankan menggunakan rekursi.

Keuntungan dan Kerugian Rekursi
Saat panggilan rekursif dilakukan, lokasi penyimpanan baru untuk variabel dialokasikan di stack. Karena, setiap panggilan rekursif kembali, variabel dan parameter lama dihapus dari tumpukan. Karenanya, rekursi umumnya menggunakan lebih banyak memori dan umumnya lambat.
Di sisi lain, solusi rekursif jauh lebih sederhana dan membutuhkan lebih sedikit waktu untuk menulis, men-debug, dan memelihara.
Bacaan yang Direkomendasikan: Apa keuntungan dan kerugian dari rekursi?