Sebuah objek disebut berulang (rekursif,
recursive) jika setiap objek mengandung dirinya sendiri atau didefinisikan
dengan dirinya sendiri. Dalam matematika, definisi rekursif sebuah fungsi
adalah definisi fungsi yang menggunakan fungsi tersebut.
Kegunaan hubungan berulang terletak pada
kemampuannya yang memungkinkan menyatakan definisi yang tak hingga (indefinite)
dengan pernyataan yang hingga (finite). Algoritma rekursif memungkinkan
perulangan yang tidak akan berhenti atau tak hingga. Karenanya, untuk
memecahkan masalah menggunakan hubungan berulang, harus ditemukan basis, yaitu
kondisi berhenti (termination) rekursif yang jelas dan definisi rekursif.
Implementasi definisi rekursif dapat berbentuk fungsi rekursif atau prosedur
rekursif.
Jika sebuah masalah telah didefinisikan secara
rekursif, maka penggunaan algoritma rekursif akan memudahkan dalam membuat
program dan program akan lebih mudah dibaca, meskipun ada kemungkinan dalam
eksekusinya menjadi tidak efesien. Tetapi, jika sebuah masalah dapat
diselesaikan tanpa hubungan rekursif dan algoritmanya tidak menjadi rumit,
pendekatan tersebut biasanya lebih baik.
Sub program rekursif adalah sub program yang
memanggil dirinya sendiri selama kondisi dipenuhi. Dengan melihat sifat sub
program rekursif di atas maka sub program rekursif harus memiliki :
1. Kondisi yang menyebabkan pemanggilan dirinya
berhenti (disebut kondisi khusus atau special condition)
2. Pemanggilan diri sub program (yaitu bila kondisi
khusus tidak dipenuhi)
Secara umum bentuk dari sub program rekursif
memiliki statement kondisional :
·
If kondisi
khusus tak dipenuhi
·
Then panggil
diri-sendiri dengan parameter yang sesuai
·
Else lakukan
instruksi yang akan dieksekusi bila kondisi khusus dipenuhi
sebuah program rekursif umumnya dipakai untuk
permasalahan yang memiliki langkah penyelesaian yang terpola atau
langkah-langkah yang teratur. Bila kita memiliki suatu permasalahan dan kita
mengetahui algoritma penyelesaiannya, kadang-kadang sub program rekursif
menjadi pilihan kita bila memang memungkinkan untuk dipergunakan. Secara
algoritmis (dari segi algoritma, yaitu bila kita mempertimbangkan penggunaan
memori, waktu eksekusi sub program) sub program rekursif sering bersifat tidak
efisien.
Dengan demikian sub program rekursif umumnya memiliki
efisiensi dalam penulisan perintah,
tetapi kadang tidak efisien secara algoritmis. Meskipun demikian banyak pula
permasalahan-permasalahan yang lebih sesuai diselesaikan dengan cara rekursif.
Kelebihan menggunakan rekursif :
- Sangat mudah
untuk melakukan perulangan dengan batasan yang luas dalam artian melakukan
perulangan dalam skala yang besar.
- Dapat melakukan perulangan dengan batasan fungsi.
Kekurangan menggunakan rekursif :
- Tidak
bisa melakukan nested loop atau looping bersarang.
- Biasanya
membuat fungsi sulit dipahami, hanya cocok untuk persualan tertentu saja.
- Trace
error sulit.
- Memerulukan
stack yang lebih besar, sebab setiap kali fungsi dipanggil, variabel lokal
dan parameter formal akan ditempat ke stack dan ada kalanya akan menyebabkan
stack tak cukup lagi (stack over run).
- Proses
agak berbelit-belit karena terdapat pemanggilan fungsi yang berulang-ulang
dan pemanggilan data ditumpuk.
Contoh Programnya bisa lihat: Faktorial Menggunakan Rekursif
Sumber :
Fathul Wahid : Dasar-Dasar Algoritma & Pemrograman
http://khabib.staff.ugm.ac.id/index.php?option=com_content&view=article&id=82:prosedur-dan-fungsi-rekursif&catid=28:introduction-to-algorithm-and-programming
http://array-fitriani-array.blogspot.com/2011/04/array-rekursif-iteratif.html
0 Comment to "Sub Program Rekursif Pascal"
Post a Comment