Anda di halaman 1dari 11

REKURSIF

Procedure & Fungsi


REKURSIF

Rekursif adalah suatu proses yang bisa memenggil dirinya


sendiri .
Contoh :
Procedure Rekursif;
Begin
Write(‘AMIKOM MATARAM ’);
Rekursif; {sifat rekursif}
End;

Begin
Rekursif;
End.
Uses crt;
Var
Batas : word;
Procedure Panggil;
Begin
If Batas < 5 Then
Begin
Write (‘AMIKOM MATARAM ‘);
Batas :=Batas + 1;
Panggil; {sifat rekursif}
End;
Begin
Panggil;
End.
Procedure Deret(N : word);
Begin
Write(N:3);
If N < 10 then
Deret(N+1); {sifat rekursif}
End;
Var
N : word;
Begin
N := 0;
Deret(N);
End.

Output :

0 1 2 3 4 5 6 7 8 9 10
Faktorial
0! = 1
N! = N x (N-1)! Untuk N > 0

Scr notasi pemrograman dapat ditulis sebagai :


FAKTORIAL (0) = 1 .............................................. (1)
FAKTORIAL (N) = N * FAKTORIAL (N-1)...................... (2)

Contoh :

FAKT(5) = 5 * FAKT(4)
FAKT(4) = 4 * FAKT(3)
FAKT(3) = 3 * FAKT(2)
FAKT(2) = 2 * FAKT(1)
FAKT(1) = 1 * FAKT(0)
Nilai Awal
Misal :
hitung 5!, maka dapat dilakukan secara rekursif
dgn cara :
5! = 5 * 4!

Scr rekursif nilai dr 4! Dpt dihitung kembali dgn 4 * 3!,


shg 5! Menjadi :5! = 5 * 4 * 3!

Scr rekursif nilai dr 3! Dpt dihitung kembali dgn 3 * 2!, shg


5! Menjadi : 5! = 5 * 4 * 3 * 2!

Scr rekursif nilai dr 2! Dpt dihitung kembali dgn 2 * 1, shg


5! Menjadi : 5! = 5 * 4 * 3 * 2 * 1 = 120.
Program Faktorial dengan fungsi rekursif

uses wincrt;

function faktorial (nilai : integer) : integer;


begin if nilai <= 0 then
faktorial := 1
else
faktorial := nilai * faktorial (nilai-1) {sifat rekursif}
end;
Var N : integer;

Begin Write('Berapa faktorial ? ');


Readln(N);
Writeln(N,' != ',faktorial(N));
End.
Contoh-contoh
a) PROCEDURE TULIS_1(banyak : integer;kata : string);
begin
if banyak > 1 then TULIS_1(banyak-1,kata); {Rekursif)
writeln(kata, banyak:5);
end;  
b) Function KALI_REK_F(a,b:integer):longint;
begin
if b>1 then
KALI_REK_F := KALI_REK_F(a,b-1)+a {rekursif}
else
KALI_REK_F := a;
end;
Tanpa Rekursif
Procedure KALI_BIASA_P(a,b : integer; var hasil : longint);
var i : integer;
begin
hasil := 0;
for i:= 1 to b do hasil := hasil + a;
end;
Function KALI_BIASA_F(a,b:integer):longint;
var hasil : longint; i: integer;
begin
hasil := 0;
for i:= 1 to b do hasil := hasil + a;
KALI_BIASA_F := hasil;
Algoritma Perpangkatan
Function pangkat(input a,n:integer)integer
Deklarasi
Algoritma
If n=0 then
Pangkat:=1
Else
Pangkat:= a*pangkat(a,n-1)
endif
Membalik Urutan Bilangan Bulat
Procedure BalikAngka(input n:integer)
Deklarasi
Algoritma
If n<10 then
Write(n)
Else
Write(n mod 10);
BalikAngka( n div 10)
endif