Definisi Rekursif
Menurut Niklaus Wirth definisi rekursif:
“An object is said be recursive if it partially consist of is defines in terms of itself”
Rekursif disusun oleh dua bagian:
1.Basis
Berisi kasus yang terdefinisi eksplisit, bagiani ini yang menghentikan rekursif.
2.Rekurens
Mendefinisikan objek dalam terminologi dirinya sendiri.
Contoh Algoritma Fungsi Rekursif
Program Faktorial_Rasid;
Bil : integer;
function Faktorial(n:integer) : integer;
begin
if n=0 then
Faktorial ç1
else
Faktorial ç n * Faktorial(n-1);
end;
BEGIN
readln(Bil);
Write(‘Faktorial dari ‘, Bil, ‘ adalah ‘,Faktorial(Bil));
END.
Rekursif dengan List Berkait
Link berkait / linked list adalah sekumpulan elemen (boleh kosong) yang setiap elemennya terdiri dari 2 bagian:
Kapan Tidak Menggunakan Rekursif
Ada 2 alasan kita harus mengubah algoritma rekursif menjadi algoritma iteratif:
1.Bahasa pemrograman tidak mendukung. FORTRAN tidak mendukung.
2.Dapat terjadi rekursif tidak mangkus, memiliki kerumitan yang tidak perlu atau terlalu lambat.
Contoh 2 Menara Hanoi
Program Hanoi_Rasid;
uses wincrt;
procedure MenaraHanoi (jumlah : integer;
sumber, tujuan, bantuan : char;
var langkah : integer);
begin
if jumlah = 1 then
begin
langkah := langkah + 1;
write(‘Langkah : ‘,langkah);
writeln(‘ Pindahkan Piringan 1 dari menara ‘,sumber,’ ke menara ‘, tujuan);
end
else
begin
(*Pindahkan N-1 piringn dari menara A ke B
menggunakan menara C sebagai menara bantuan
emerer.com*)
MenaraHanoi(jumlah-1,sumber,bantuan,tujuan,langkah);
langkah :=langkah + 1;
write(‘Langkah : ‘,langkah);
write(‘ Pindahkan Piringan ‘,jumlah);
writeln(‘ dari menara ‘,sumber ,’ ke menara ‘,tujuan);
(*Pindahakan N-1 piringan dari menara B ke C
menggunakan menara A sebagai sebagai menara bantuan*)
MenaraHanoi(jumlah-1,bantuan,tujuan,sumber,langkah);
end;
end;
var
jumlah, langkah : integer;
sumber,bantuan, tujuan : char;
begin
write(‘Masukkan Jumlah Piringan : ‘); readln(jumlah);
langkah := 0;
sumber := ‘A’; bantuan := ‘B’; tujuan := ‘C’;
MenaraHanoi(jumlah,sumber,tujuan,bantuan,langkah);
end.
Daftar Pustaka:
Munir, Rinaldi. 2007. Algoritma dan pemrograman dalam Bahasa Pascal dan C, Penerbit informatika. Bandung.