Fungsi Rekursif adalah
suatu fungsi yang mana dalam proses memecahkan masalah, fungsi ini memanggil
fungsinya sendiri. Biasanya fungsi rekursi ini digunakan untuk memecahkan masalah
tertentu, dimana solusinya bisa diperoleh dari bentuk permasalahan yang lebih
sederhana. Dan solusi dari permasalahan yang lebih sederhana tadi diperoleh
dari solusi permasalahan yang lebih sederhana lagi, begitu seterusnya. Fungsi
rekursif ini biasanya digunakan dalam bahasa pemrograman procedural seperti bahasa
pemrograman C, C++ dan berbagai bahasa program procedural lainnya. Adapun konsep
kerja dari fungsi rekursif ini sendiri adalah, fungsi akan melakukan
pemanggilan terhadap fungsinya sendiri sampai proses kondisi terakhir
terpenuhi.
Pada contoh
program berikut ini merupakan implementasi
fungsi rekursif untuk menghitung nilai factorial dari suatu bilangan. Secara
umum cara kerja program ini adalah sebagai berikut : awalnya program meminta
input kepada user bilangan yang akan difaktorial dan ditampung pada variabel “m”,
setelah program / variabel “m” mendapatkan nilai input bilangan, maka nilai
tersebut akan diteruskan kedalam fungsi factorial yang mana nilai pada variabel
“m” akan ditampung oleh variabel “k”, setelah variabel “k” menerima nilai
masukan, maka program akan melakukan pengecekan, jika “k” samadengan “0”, maka
akan dikeluarkan nilai factorial samadengan “1”, jika tidak , maka proses
perhitungan factorial secara rekrusif dimulai, proses perhitungan ini akan
berjalan terus sampai batas akhir kondisi terpenuhi, setelah itu data hasil
perhitungan factorial tersebut akan dikembalikan lagi ke fungsi utama, sehingga
pada fungsi utama program nilai factorial bisa ditampilkan kelayar.
Untuk lebih jelas lagi berikut video tutorial
implementasi penggunaan fungsi rekursif dalam perhitungan factorial. Selain
itu, penjelasan dari masing – masing baris dalam program juga telah disertakan
dalam program yang dibuat.
Source Code :
#include <stdio.h> //library
untuk proses input - output
#include <stdlib.h> //
library untuk fungsi pause (fungsi jeda)
int main(void){ /* fungsi utama
program yang menjalankan seluruh baris code
int main (void)
mengembalikan nilai 0*/
int m; // deklarasi variabel integer private
int
Faktorial (int k); //
prototype fungsi rekrusif faktorial yang bertipe data integer
printf("Masukan
sembarang bilangan bulat positif :"); //
perintah untuk meminta input ke user, data yang diinput berupa bilangan bulat
positif
scanf("%d",&m);
// data yang diinputkan user akan ditampung dalam
variabel m
printf("\nMelalui
perhitungan rekursif, %d! = %d\n",m, Faktorial(m)); /*perintah untuk menampilkan kelayar, baik bilangan bulat
dalam variabel m yang diinputkan user maupun hasil perhitungan rekrusif,
sedangkan Faktorial(m) merupakan pemanggilan fungsi
rekursif, dimana nilai yang dihitung dalam fungsi rekrusi diambil dari data
yang diinputkan user yang ditampung dalam variabel m*/
system ("pause");
// fungsi jeda program, sehingga kita bisa melihat
hasil input dan output program dan untuk mengakhiri program user harus menekan
tombol enter
return 0;
//program utama akan mengembalikan nilai 0
}
//
fungsi rekrusif
int Faktorial(int k){ // fungsi yang
bernama Faktorial dan bertipe data integer
// nilai k =
nilai yang diinputkan user yang ditampung dalam variabel m
if(k==0) // kondisi, dimana jika k==0, maka fungsi faktorial akan
mengembalikan nilai 1
return
1; // perintah mengembalikan nilai 1
else // kondisi statement else akan dijalankan apabila kondisi
k==0 tidak terpenuhi
return
k*Faktorial(k-1); // pengembalian nilai
k*Faktorial(k-1) dan sekaligus pemanggilan fungsi faktorial() sendiri
} // batas akhir dari fungsi faktorial
Screen Shot :
Running Program |