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 kke jumlah semua angka yang lebih kecil dari kdan mengembalikan hasilnya. Ketika k menjadi 0, fungsi hanya mengembalikan 0. Saat dijalankan, program mengikuti langkah-langkah berikut:

10 + jumlah(9)
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 k0, 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 kmenjadi 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;
    }
  }
}