Pengertian Rekursif
Rekursif dapat diartikan bahwa suatu proses yang bisa memanggil dirinya sendiri. sedikit menyimpang dari pengertian ada sedikit pendapat tentang Rekursif salah satunya adalah Menurut definisi dalam Microsoft Bookshelf, Rekursif adalah kemampuan suatu rutin untuk memanggil dirinya sendiri. Dalam Rekursif sebenarnya terkandung pengertian prosedur dan fungsi. Perbedaannya adalah bahwa rekursif bisa memanggil ke dirinya sendiri, tetapi prosedur dan fungsi harus dipanggil lewat pemanggil prosedur dan fungsi. Rekursif merupakan teknik pemrograman yang penting dan beberapa bahasa pemrograman mendukung keberadaan proses rekursif ini. Dalam prosedur dan fungsi, pemanggilan ke dirinya sendiri bisa berarti proses berulang yang tidak bisa diketahui kapan akan berakhir.
Contoh Rekursif
Kode berikut memperlihatkan contoh fungsi rekursif, untuk menghitung hasil kali dari dua bilangan:
Bagaimana cara kerja fungsi rekursif ini? Sederhananya, selama nilai
b
bukan 1
, fungsi akan terus memanggil perintaha + kali(a, b - 1)
, yang tiap tahapnya memanggil dirinya sendiri sambil mengurangi nilai b
. Mari kita coba panggil fungsi kali
dan uraikan langkah pemanggilannya:
Perhatikan bahwa sebelum melakukan penambahan program melakukan pemanggilan fungsi rekursif terlebih dahulu sampai fungsi rekursif mengembalikan nilai pasti ([Math Processing Error]). Setelah menghilangkan semua pemanggilan fungsi, penambahan baru dilakukan, mulai dari nilai kembalian dari fungsi yang paling terakhir. Mari kita lihat contoh fungsi rekursif lainnya, yang digunakan untuk melakukan perhitungan faktorial:
Fungsi
faktorial
memiliki cara kerja yang sama dengan fungsi kali
. Mari kita panggil dan lihat langkah pemanggilannya:
Dengan melihat kemiripan cara kerja serta kode dari fungsi
faktorial
dan kali
, kita dapat melihat bagaimana fungsi rekursif memiliki dua ciri khas:- Fungsi rekursif selalu memiliki kondisi yang menyatakan kapan fungsi tersebut berhenti. Kondisi ini harus dapat dibuktikan akan tercapai, karena jika tidak tercapai maka kita tidak dapat membuktikan bahwa fungsi akan berhenti, yang berarti algoritma kita tidak benar.
- Fungsi rekursif selalu memanggil dirinya sendiri sambil mengurangi atau memecahkan data masukan setiap panggilannya. Hal ini penting diingat, karena tujuan utama dari rekursif ialah memecahkan masalah dengan mengurangi masalah tersebut menjadi masalah-masalah kecil.
Setiap fungsi rekursif yang ada harus memenuhi kedua persyaratan di atas untuk memastikan fungsi rekursif dapat berhenti dan memberikan hasil. Kebenaran dari nilai yang dihasilkan tentu saja memerlukan pembuktian dengan cara tersendiri. Tetapi sebelum masuk ke analisa dan pembuktian fungsi rekursif, mari kita lihat kegunaan dan contoh-contoh fungsi rekursif lainnya lagi.
Contoh Program C++
Menghitung Faktorial
#include <iostream>
using namespace std;
long int faktorial (int n)
{ if (n==0 || n==1)
return 1;
else
return n* faktorial (n-1);}
int main()
{ int n;
long int hasil;
cout<<"Masukkan nilai yang ingin di faktorialkan. n= ";
cin>>n;
hasil=faktorial(n);
cout<<n<< "!= "<< hasil;
return 0;
}
Daftar Pustaka
Wordpress.(2011),”Rekursif dan Iteratif ”. http://einzebern.wordpress.com/2011/10/26/rekursif-dan-iteratif/
(diakses 12,April,2014)
Bertzzie(2013), "Analisis Algoritma ". http://bertzzie.com/knowledge/analisis-algoritma/Rekursif.html (diakses 12,April,2014)