Selasa, 29 Maret 2011

struktur data tentang fungsi rekursif

Pengertian rekursif

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. Satu atau lebih kondisi penghentian yang bias dievaluasi untuk parameter-parameter tertentu. Langkah rekursif dimana nilai sekarang dalam algoritma bisa didefinisikan dalam nilai sebelumnya. Langkah rekursif harus menuju ke kondisi penghentian 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. Secara umum penyelesaian secara rekursif digunakan jika penyelesaian sulit dilaksankan secara iterative, efisiensi dengan cara  rekursif sudah memadai, efisiensi bukan masalah dibandingkan  dengan kejelasan logika program

Meskipun penulisan program dengan cara rekursif bisa lebih pendek,namun Terdapat kekurangan dan kelebihan dalam fungsi rekursif ini. Berikut adalah penjelasan penjelasan mengenai kelebihan dan kekurangan dalam mengguankan fungsi rekursif:

Kelebihan perulangan rekursif:
v  Sangat mudah untuk melakukan perulangan dengan batasan yang luas dalam artian melakukan perulangan dalam skala yang besar.
v  Dapat melakukan perulangan dengan batasan fungsi.

Kekurangan perulangan rekursif:
v  Tidak bisa melakukan nested loop atau looping bersarang.
v  Biasanya membuat fungsi sulit untuk dipahami, hanya cocok untuk persoalan tertentu saja.
v  Trace error sulit.
v  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).
v  Proses agak berbelit-belit karena terdapat pemangilan fungsi yang berulang-ulang dan pemanggilan data yang ditumpuk.
v  Pemborosan (Redundancy) dapat terjadi dalam
v  penyelesaian masalah secara rekursif

contoh source code tentang program untuk melakukan penjumlahan pada sebuah deret bilangan. Kemudian akan menampilkan hasil akhir berupa perkalian tiap bilangan hasil penjumlahan.

Contoh:

 Input: bil1 =3       hasil 1=1+2+3=6
 Input: bil 2=2       hasil 2=1+2=3
Output : hasil akhir =6*3=18 (muncul angka 18 di layar monitor)

#include "iostream.h"

int bil_satu(int a)
{
     if(a==0) return(0);
     return (a+bil_satu(a-1));
}

int bil_dua(int b)
{
     if(b==0) return(0);
     return (b+bil_dua(b-1));
}
main ()
{
     int j;
     int k;
     int hasil;


     cout<<"masukan angka pertama=";
     cin>>j;
    
     cout<<"hasil="<<bil_satu(j)<<endl;
    
    
    
     cout<<"masukan angka kedua=";
     cin>>k;

     cout<<"hasil="<<bil_dua(k)<<endl;
    

     hasil=(bil_satu(j)*bil_dua(k));

     cout<<"hasil dari "<<bil_satu(j)<<" x "<<bil_dua(k)<<" =             "<<hasil<<"";
     cout<<endl;
    
     return (1);    
    

}


semoga bermanfaat

0 komentar:

Posting Komentar

Share

Twitter Delicious Facebook Digg Stumbleupon Favorites More