Rekursi pada C/C++

Pada tutorial kemarin kita telah membahas tentang fungsi pada bahasa C/C++. Pada tutorial kali ini kita akan membahas tentang rekursi pada bahasa C/C++, tutorial kali ini akan mencakup pengertian rekursi.

Pengertian Rekursi

Rekursi merupakan fungsi yang didalam blok kodenya dia memanggil dirinya sendiri, dengan menerapkan hal ini kita akan mendapatkan efek layaknya suatu perulangan biasa (denga while,for,do while). Setiap fungsi rekursi selalu memiliki statement percabangan yang digunakan untuk menentukan kapan proses rekursi berhenti. Seperti yang telah saya bilang sebelumnya bahwa rekursi akan menciptakan efek layaknya perulangan, jadi kenapa harus ada rekursi? Hal ini dikarenakan terdapat kasus-kasus yang lebih mudah diselesaikan dengan rekursi dan begitu pula sebaliknya.

Untuk kejelasan perbedaan ierasi dan rekursi dapat kita lihat pada tabel berikut

RekursiPerulangan / Iterasi

Rekursi Iterasi
Kode program lebih ringkas dan mudah dipahami Kode program lebih panjang, untuk beberapa kasus solusi iteratif lebih sulit diterapkan
Membutuhkan alokasi memori yang besar Relatif lebih kecil alokasi memorinya
Tidak cocok ketika kinerja tinggi diperlukan, karena terjadi overhead pemanggilan fungsi dalam jumlah yang relatif besar Cocok diterapkan ketika kinerja aplikasi harus diterapkan (hanya ada satu kali pemanggilan fungsi)

Penulisan Fungsi rekursi

Contoh dari rekursi berikut ini hanya tersedia dalam bahasa C, untuk merubah ke bahasa C++ anda hanya perlu mengganti input dan output saja.

Berikut ini adalah program untuk mencari faktorial

int hitung(int n);
int main(){
  int fact,n;
  printf("Masukkan angka = ");
  scanf("%i",&n);
  fact=hitung(n);
  printf("%i",fact);
  getch();

  return 0;
}

int hitung(int n){
  int x,y;
  if(n<=0){
    return(1);
  }
  x=n-1;
  y=hitung(x);	//fungsi hitung memanggil dirinya sendiri
  return(n*y);
}

fungsi hitung dapat disederhanakan menjadi

int hitung(int n){
  if(n<=0){
    return(1);
  }
  return(hitung(n-1)*n);
}

Contoh rekursi, terutama penggunaannya dapat digunakan dibanyak tempat contohnya:

  • Pencarian elemen terbesar suatu array
  • List semua item di suatu direktori beserta sub direktorinya
  • Melakukan perulangan dengan linked list secara terbalik
  • Angka fibonancci
  • Dan sebagainya

Itu saja tutorial kali ini, saya mohon maaf jika masih terdapat banyak kekurangan. Sekian dan terimakasih.

HAPPY CODDING

No Responses

Leave a Reply