Rekursi atau recursion adalah proses dari suatu subprogram (dapat berupa fungsi/prosedur) yang memanggil dirinya sendiri. Proses rekursi untuk beberapa kasus merupakan algoritma yang baik dan dapat membuat pemecahan masalah lebih mudah. Akan tetapi sebagai imbalannya, proses rekursi ini harus dibayar mahal dengan memori yang banyak digunakan dikarenakan setiap kali suatu subprogram dipanggil, maka diperlukan sejumlah tambahan memori.
Jika kita menulis suatu fungsi/prosedur rekursi, yang perlu diperhatikan adalah fungsi/prosedur tersebut harus mengandung suatu kondisi akhir dari proses rekursi. Kondisi ini diperlukan untuk mencegah terjadinya proses rekursi yang tidak berujung (indefinite), yaitu proses rekursi akan dilakukan tanpa henti.

berikut ini program rekursi dengan menggunakan Console Aplication. (rekursi mengurutkan data dengan metode quick sort dalam bentuk procedure). gambar dibawah ini adalah listing program rekursi



lanjutan listing program rekursi


Procedure Quicksort(var x:Larikurut;bawah,atas:word);

var
  i,j:word;
  sementara:Tipelarik;

begin
  while atas>bawah do
  begin
    i:=bawah;
    j:=atas;
    sementara:=x[bawah];
    {memecah 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;

Keterangan : 
Procedure Quicksort(var x:Larikurut;bawah,atas:word);
menggunakan Procedure Quicksort karena pada program ini adalah program mengurutkan data
sementara:Tipelarik;
data bertipe Array
Bagian yang menunjukkan unsur rekursi adalah :
begin
  while atas>bawah do
  begin
    i:=bawah;
    j:=atas;
    sementara:=x[bawah];
    {memecah 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;



saat menjalankan program, maka akan muncul gambar seperti dibawah ini. pengurutannya dari yang terkecil ke terbesar







**********Selamat Mencoba**********
_________________________________________________________________________________

Tugas [Carilah literature lain tentang Rekursi]

Rekursif berarti suatu proses yang memanggil dirinya sendiri. Dalam rekursif sebenarnya terkandung pengertian prosedur atau fungsi. Perbedaannya adalah bahwa rekursif bisa memanggil ke dirinya sendiri, tetapi prosedur atau fungsi harus dipanggil lewat pemanggil prosedur atau fungsi. Rekursif merupakan teknik pemrograman yang penting, dan beberapa bahasa pemrograman modern mendukung keberadaan proses rekursif ini.
Pemanggilan prosedur atau fungsi ke dirinya sendiri bisa berarti proses yang berulang yang tidak bisa diketahui kapan akan berakhir. Dalam pemakaian sehari-hari, rekursi merupakan teknik pemrograman yang berdaya guna untuk digunakan pada pekerjaan pemrograman dengan mengeksperisikannya ke dalam suku-suku dari program lain dengan menambahkan langkahlangkah sejenis.
Bentuk rekursif :
a. suatu subrutin/fungsi/ prosedur yang memanggil dirinya sendiri.
b. Bentuk dimana pemanggilan subrutin terdapat dalam body subrutin
c. Dengan rekursi, program akan lebih mudah dilihat
Bentuk rekursi bertujuan untuk : 
  • menyederhanakan penulisan program 
  • menggantikan bentuk literasi 

Syarat bentuk rekursif: 
  • ada kondisi terminal (basis) 
  • ada subroutine call yang melibatkan parameter yang nilainya menuju kondisi terminal (recurrence)

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.
Memerlukan stack yang lebih besar, sebab setiap kali fungsi dipanggil, variabel lokal dan parameter formal akan ditempatkan ke stack dan ada kalaya akan menyebabkan stack tak cukup lagi (Stack Overum).
Proses agak berbelit-belit karena terdapat pemangilan fungsi yang berulang-ulang dan pemanggilan data yang ditumpuk.


 Sumber : https://zaharaahyesa.wordpress.com/2014/04/10/algoritma-rekursif/



Leave a Reply

Qonita Syarif. Diberdayakan oleh Blogger.