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