2.5 Rekursi Java

7 2 0
                                    

Rekursi Java
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.

Input :
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;
    }
  }
}

Output :
55

Contoh Dijelaskan
Saat fungsi sum() dipanggil, ia menambahkan parameter k ke jumlah semua angka yang lebih kecil dari k dan menampilkan hasilnya.  Ketika k menjadi 0, fungsi hanya mengembalikan 0. Saat dijalankan, program mengikuti langkah-langkah berikut:

10 + sum(9)
10 + ( 9 + sum(8) )
10 + ( 9 + ( 8 + sum(7) ) )
...
10 + 9 + 8 + 7 + 6 + 5 + 4 + 3 + 2 + 1 + sum(0)
10 + 9 + 8 + 7 + 6 + 5 + 4 + 3 + 2 + 1 + 0

Karena fungsi tidak memanggil dirinya sendiri saat k adalah 0, program berhenti di sana dan menampilkan 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 penghentian adalah saat 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 penghentian untuk fungsi rekursif ini adalah saat akhir tidak lebih besar dari mulai:

 Contoh
Gunakan rekursi untuk menjumlahkan semua angka antara 5 hingga 10.

Input :
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;
    }
  }
}

Output :
45

Kamu telah mencapai bab terakhir yang dipublikasikan.

⏰ Terakhir diperbarui: Mar 05, 2022 ⏰

Tambahkan cerita ini ke Perpustakaan untuk mendapatkan notifikasi saat ada bab baru!

Bahasa Pemrograman Java Pemula Dan Tingkat LanjutTempat cerita menjadi hidup. Temukan sekarang