Jumat, 11 Desember 2009

REKURSI

• Rekursi yaitu procedure atau function yang memanggil dirinya sendiri. Gunanya untuk melakukan proses berulang yang sulit diketahui kapan akan berakhir.
• Contoh rekursi:

1. Faktorial
Program Faktorial;
uses wincrt;
function Faktorial(a:integer):longint;
begin
if (A=1)then
Faktorial:=1
else
Faktorial:=a*faktorial(a-1);
end;
var
x:integer;
begin
writeln('Faktorial sequence');
writeln;
write('Berapa Faktorial ?');readln(x);
writeln(x ,' faktorial ',' = ',faktorial(x));
end.

2. Fibonanci

Program Fibonacci;
uses wincrt;
Var fibo: array [1..10] of integer;
A,i,hasil:integer;
begin
clrscr;
write('Masukkan suku keberapa dalam deret fibonacci : ');readln(A);
if (A=1) or (A=2) then hasil:=1 else
begin
fibo[1]:=1; fibo[2]:=1;
for i:=3 to A do
begin
fibo[i]:=fibo[i-1]+fibo[i-2];
hasil:=fibo[i];
end;
end;
writeln;
for i:=1 to A do
write(fibo[i],' ');
writeln;
writeln('Suku Ke-',A,' dari deret fibonacci adalah ',hasil);
end.

3. Perpangkatan

Program pangkat;
uses wincrt;
var A,x,i,hasil:longint;
begin
write('masukkan bilangan yang akan dipangkatkan = ');readln(A);
write('masukkan bilangan pangkat = ');readln(x);
hasil:=1;
for i:=1 to x do
hasil:=hasil*A;
writeln('hasil dari ',A,' pangkat ',x,' adalah ',hasil);
end.

2 komentar: