Rabu, 06 Mei 2015

LATIHAN 4 : Rekursif atau Rekursi (Recusion)

Diposting oleh Siti Asmaul Sadeyah di 19.32
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
3. Berpikir secara 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.

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

 

Coretan Si Dhea Template by Ipietoon Blogger Template | Gift Idea