Rabu, 18 Maret 2015

Rekrusif



Rekrusi adalah salah satu metode penyesuaian atau solusi masalah dengan mendefinisikan masalah baru yang jenis permasalahan atau kasusnya sama. Penyelesaian rekursi untuk sebuah masalah diperoleh dengan membuat sub masalah baru yang sejenis namun ukuran/cakupan/ruang masalahnya lebih kecil. Salah satu ukuran masalah adalah banyaknya data yang terlibat. Hal yang sama dilakukan pada setiap submasalah hingga diperoleh submasalah terkecil yang solusinya dapat diperoleh  secara langsung. Solusi dari submasalah terkecil ini dipakai untuk menyelesaikan masalah yang lebih besar hingga diperoleh solusi untuk masalah yang sebenarnya (Sismoro.2004).
Kelebihan perulangan rekursif adalah, sangat mudah untuk melakukan perulangan dengan batasan yang luas dalam artian melakukan perulangan dalam skala yang besar. Serta dapat melakukan perulangan dengan batasan fungsi. Sedangkan kekurangan rekrusif adalah 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). Serta proses agak berbelit-belit karena terdapat pemangilan fungsi yang berulang-ulang dan pemanggilan data yang ditumpuk (Sandi. 2010).
Berikut ini adalah contoh penerapan rekrusif dalam program bilangan fibonacci.

Source Code



program bilangan_fibonancci;
uses crt;
var
x,y,z,n,i:integer;
jawab: string;


begin

clrscr;
    gotoxy (20,5);  writeln ('|*************__________________________**************|');
    gotoxy (20,6);  writeln ('|                                               |');
    gotoxy (20,7);  writeln ('|         Selamat Datang pada Program Rekrusif  |');
    gotoxy (20,8);  writeln ('|                                               |');
    gotoxy (20,9);  writeln ('|                                               |');
    gotoxy (20,10); writeln ('|              Bilangan Fibonancci              |');
    gotoxy (20,11); writeln ('|                                               |');
    gotoxy (20,12); writeln ('|                                               |');
    gotoxy (20,13); writeln('|***********_________________________************|');
    gotoxy (20,16); writeln ('                    Oleh                         ');
    gotoxy (20,17); writeln ('              Ketut Mega Fortuna                 ');
    gotoxy (20,18); writeln ('                    J1F114029                    ');
    gotoxy (20,21); writeln ('        Tekan Enter untuk Melanjutkan            ');
    readkey;

repeat
clrscr;
write('Masukkan Batas Bilangan Fibonancci : ');readln(n);

x:=0;
y:=1;
z:=1;
i:=1;
while (i<= n) do
      begin

write(z,' ');

           i:=i+1;
           z:=x+y;
           x:=y;
           y:=z;

      end;

writeln;
write ('Apakah Anda Ingin Mengulangi [Y/T] : '); readln (jawab);
writeln;
until (jawab='T') or (jawab='t');
readkey;
end.
 





Screenshot Program 

Gambar.  1 Tampilan Awal

Gambar 2 Tampilan Setelah Menekan Enter

 
Gambar. 3 Menginputkan Batas Bilangan yang Diinginkan

 
Gambar. 4 Hasil Bilangan Fibonacci  

Gambar. 5 Ingin Mengulang Penginputan Nilai dengan Menginputkan huruf ‘Y/t’

Gambar. 6 Menginputkan Batas Bilangan yang Diinginkan Kembali

Gambar. 7 Hasil Bilangan Fibonacci  


Gambar. 8 Ingin Mengakhiri Program dengan Menginputkan huruf ‘T/t’


Demikian program sederhana ini, semoga bermanfaat.
 

 

Tidak ada komentar:

Posting Komentar