Assalamu'alaikum semuaa...
Rasanya udah lamaaa buanget gak ngeblog (baca: padahal baru sebulan xD) rasanya jari-jariku pada gemes pengen ngetik-ngetik hehe.. Pada tulisan kali ini aku akan membagikan step by step tentang Rekusif atau Rekursi atau Recursion pada STRUKTUR DATA.Terserah ya kalian nyebutnya apa -_- seenaknya aja deh asal gak keluar dari 3 kata tersebut hehe... Sebelum kita bahas mengenai Rekursi coba perhatikan, gambar dibawah. Dalam
gambar
ini ada gambar ini lagi yang di dalamnya ada gambar ini lagi dan
seterusnya sampai kedalaman tak terbatas. dan juga bisa kita lihat pada
bangunan yang memanjang yang bangunannya sepertinya mengikuti bangunan
sebelumnya.
Contonya pada aplikasi pemutar vidio berikut berikut sebuah bentuk rekursif :
Tujuan
1. Memahami rekursi sebagai konsep yang dapat
digunakan untuk merumuskan solusi sederhana dalam sebuah permasalahan yang
sulit untuk diselesaikan loop for, while do.
2. Dapat menyelesaikan suatu permasalahan dengan
konsep rekursif
PENGERTIAN REKURSIF (RECURSION)
Rekursif adalah konsep pengulangan
yang penting dalam ilmu komputer. Konsep ini dapat digunakan untuk merumuskan solusi
sederhana dalam sebuah permasalahan yang sulit untuk diselesaikan secara iteratif dengan
menggunakan loop for, while do.
Pada saat tertentu konsep ini dapat digunakan untuk
mendefinisikan permasalahan dengan konsisten dan sederhana. Pada saat yang lain,
rekursi dapat membantu untuk mengekspresikan algoritma dalam sebuah rumusan yang
menjadikan tampilan algoritma tersebut
mudah untuk dianalisa.
Rekursif berarti bahwa suatu proses bisa memanggil dirinya sendiri. 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.
KELEBIHAN DAN KELEMAHAN REKURSIF
Kelebihan
Perulangan Rekursif :
• Sangat mudah untuk melakukan perulangan dengan batasan yang luas dalam artian melakukan perulangan dalam skala yang besar.
• Dapat melakukan perulangan dengan batasan fungsi.
• Sangat mudah untuk melakukan perulangan dengan batasan yang luas dalam artian melakukan perulangan dalam skala yang besar.
• Dapat melakukan perulangan dengan batasan fungsi.
Kekurangan Perulangan Rekursif:
• Tidak bisa melakukan nested loop atau looping bersarang.
• Biasanya membuat fungsi sulit untuk dipahami, hanya cocok untuk persoalan tertentu saja.
• Trace error sulit.
• Memerlukan stack yang lebih besar, sebab setiap kali fungsi dipanggil, variabel lokal dan parameter formal akan ditempatkan ke stack dan ada kalanya akan menyebabkan stack tak cukup lagi (Stack Overrun).
• Proses agak berbelit-belit karena terdapat pemangilan fungsi yang berulang-ulang dan pemanggilan data yang ditumpuk.
Berikut contoh program Rekursif menggunakan Delphi:
Pada program di atas yang mengandung unsur Rekursi terletak pada bagian dibawah ini:
Begin
while atas>Bawah
do
Begin
I:=Bawah;
J:=atas;
sementara:=X[Bawah];
{memecak larik
menjadi 2 bagian}
While I<J Do
Begin
while
X[J]>sementara do
J:=J-1;
X[i]:=X[j];
while(I<J)And(X[i]<=sementara)do
I:=I+1;
X[J]:=x [i];
End;
x[i]:=sementara;
{urutkan rekursi}
quicksort(x,bawah,I-1);
Bawah:=I+1;
End;
End;
Beberapa hal yang perlu diperhatikan dalam penerapan rekursi
Penghenti rekursi
Proses dalam rekursi harus ada titik akhir. Titik akhir disini merupakan batas dari fungsi untuk tidak lagi memanggil dirinya sendiri sekaligus awal dari proses pemberian nilai pada fungsi tersebut. Dari contoh diatas, fungsi faktorial tidak lagi memanggil dirinya sendiri saat n=0.
Penggunaan memori
Komputer mempunyai ruang memori yang terbatas. Setiap kali fungsi memanggil dirinya sendiri, ia memerlukan tambahan sejumlah memori. Jika proses ini terus menerus, pada akhirnya menyebabkan error StackOverflowException.
Efisiensi
Kita hampir selalu dapat menggantikan rekursi dengan loop. Loop tidak memiliki overhead dari pelewatan argumen, inisialisasi penyimpanan tambahan, dan pengembalian nilai. Kinerja program dapat lebih baik tanpa pemanggilan fungsi yang rekursif.
Mari kita lihat contoh
rekursif yang sederhana dan mengenyangkan. Masalah yang akan dipecahkan
adalah memotong roti tawar tipis-tipis sampai habis. Jika masalah ini
akan dipecahkan secara rekursif, maka solusinya adalah:
Jika roti sudah habis atau potongannya sudah paling tipis, pemotongan roti selesai
Jika roti masih bisa dipotong, potong tipis dari tepi roti tersebut, lalu lakukan prosedur 1 dan 2 untuk sisa potongannya.
Yupss, “semudah” itulah fungsi rekursif! :D
Sekian tulisan saya mengenai Rekursi atau Rekursif (Recursion) maaf bila ada kesalahan dan kekurangan pada tulisan yang saya berikan karna saya juga masih belajar, kritik dan saran sangat diperlukan untuk perbaikan tulisan berikutnya. Semoga bermanfaat, Wassaalamu'alaikuum... :):):):)
0 komentar:
Posting Komentar