Selasa, 15 Desember 2009

REKURSI

REKURSI

Merupakan prosedur yang memanggil atau menggunakan prosedur itu juga. Proses dari suatu program bagian yang memanggil dirinya sendiri dikenal dengan istilah recursion. Tidak semua bahasa menyediakan kemampuan untuk melakukan proses recursion, tetapi pascal dapat. Walaupun proses ini merupakan algoritma yang baik, tetapi membutuhkan banyak memori, karena setiap kali program bagian dipanggil oleh dirinya sendiri, sejumlah ruang memori tambahan dibutuhkannya.
Contoh
1.Program Latihan_Rekursi_2;
uses wincrt;
Procedure Rekursi(a:integer);
var
y:integer;
begin
If a<10 then
begin
writeln('Pascal');
writeln;
a:=a+1;
Rekursi(a);
end;
end;

var
x:integer;
begin
writeln('Berapa batas awalnya?');readln(x);
Rekursi(x);
end.

2.program rekursi;
Var
I : integer ;
Procedure Rekursi ;
Begin
Writeln ( ‘Hallo saya Pascal ‘ ) ;
I : = I + 1 ;
If I < 10 Then
Rekursi ;
End ;
Begin
I : = 1 ;
Rekursi ;
End.
3.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.

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.

4.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.

Tidak ada komentar:

Posting Komentar