Rekursi Jawa
Rekursi Jawa
Rekursi adalah teknik membuat pemanggilan fungsi itu sendiri. Teknik ini memberikan cara untuk memecah masalah rumit menjadi masalah sederhana yang lebih mudah untuk dipecahkan.
Rekursi mungkin agak sulit untuk dipahami. Cara terbaik untuk mengetahui cara kerjanya adalah dengan bereksperimen dengannya.
Contoh Rekursi
Menjumlahkan dua angka bersama-sama mudah dilakukan, tetapi menambahkan rentang angka lebih rumit. Dalam contoh berikut, rekursi digunakan untuk menjumlahkan rentang angka dengan memecahnya menjadi tugas sederhana menambahkan dua angka:
Contoh
Gunakan rekursi untuk menambahkan semua angka hingga 10.
public class Main { public static void main(String[] args) { int result = sum(10); System.out.println(result);
}public static int sum(int k) { if (k > 0) { return k + sum(k - 1); } else { return 0;
}}
}
Contoh Dijelaskan
Saat sum()
fungsi dipanggil, ia menambahkan parameter k
ke jumlah semua angka yang lebih kecil dari k
dan mengembalikan hasilnya. Ketika k menjadi 0, fungsi hanya mengembalikan 0. Saat dijalankan, program mengikuti langkah-langkah berikut:
10 + ( 9 + jumlah(8) )
10 + ( 9 + ( 8 + jumlah(7) ) )
...
10 + 9 + 8 + 7 + 6 + 5 + 4 + 3 + 2 + 1 + jumlah(0)
10 + 9 + 8 + 7 + 6 + 5 + 4 + 3 + 2 + 1 + 0
Karena fungsi tidak memanggil dirinya sendiri saat k
0, program berhenti di sana dan mengembalikan hasilnya.
Kondisi berhenti
Sama seperti loop dapat mengalami masalah perulangan tak terbatas, fungsi rekursif dapat mengalami masalah rekursi tak terbatas. Rekursi tak terbatas adalah ketika fungsi tidak pernah berhenti memanggil dirinya sendiri. Setiap fungsi rekursif harus memiliki kondisi berhenti, yaitu kondisi dimana fungsi berhenti memanggil dirinya sendiri. Pada contoh sebelumnya, kondisi berhenti adalah ketika parameter k
menjadi 0.
Akan sangat membantu untuk melihat berbagai contoh berbeda untuk lebih memahami konsepnya. Dalam contoh ini, fungsi menambahkan rentang angka antara awal dan akhir. Kondisi berhenti untuk fungsi rekursif ini adalah ketika end tidak lebih besar dari start :
Contoh
Gunakan rekursi untuk menjumlahkan semua angka antara 5 hingga 10.
public class Main { public static void main(String[] args) { int result = sum(5, 10); System.out.println(result);
}public static int sum(int start, int end) { if (end > start) { return end + sum(start, end - 1); } else { return end; } } }