uses wincrt;
function aku(a,b:integer):integer;
begin
if a = 1 then aku := 2*a
else if b = 1 then aku := 2*b
else aku := a*b+ (aku(a-1,b)+ aku(a,b-1));
end;
function lagi (a,b : integer):integer;
begin
if (a>b) then lagi :=lagi (b,a)
else if (a=0) then lagi := b
else lagi := lagi (b mod a, a);
end;
procedure test (x,y : integer);
begin
writeln (aku (2,lagi(x,y)));
end;
var a,b : integer;
begin
b :=3;
for a := 1 to b do
test(a,b);
end.
proses.
terjadi 3 kali perulangan
test (a,b) di program utama memanggil procedure test.
procedure test memanggil function aku
function aku mamanggil function lagi
perulangan pertama
test (1,3) memanggil procedure test di sub program
procedure test (1,3) memanggil function aku (2,lagi(x,y))
function aku membutuhkan function lagi(x,y)
pertama mencari nilai dari function lagi (x,y)
lagi (1,3)
apakah a>b
1>3 tidak, maka
apakah a=0
1=0 tidak, maka
lagi= lagi (3 mod 1,1) {3 mod 1 = 1}
lagi (1,1)
apakah a>b
1>1 tidak, maka
apakah a=0
1=0 tidak, maka
lagi = lagi (1 mod 1,1) {1 mod 1 =0}
lagi (0,1)
apakah a>b
0>1 tidak, maka
apakah a=0 iya, maka
lagi = b
lagi = 1
function aku (2,lagi(x,y))
function aku (2,1)
apakah a=1
2=1 tidak, maka
apakah b=1
1=1 iya, maka
aku= 2 x b
aku= 2 x 1
aku = 2
perulangan yang kedua
test (2,3) memanggil procedure test di sub program
procedure test (2,3) memanggil function aku (2,lagi(x,y))
function aku membutuhkan function lagi(x,y)
pertama mencari nilai dari function lagi (x,y)
lagi (2,3)
apakah a>b
2>3 tidak, maka
apakah a=0
2=0 tidak, maka
lagi= lagi (3 mod 2,2) {3 mod 2 = 1}
lagi (1,2)
apakah a>b
1>2 tidak, maka
apakah a=0
2=0 tidak, maka
lagi = lagi (2 mod 2,1) {2 mod 2 =0}
lagi (0,1)
apakah a>b
0>1 tidak, maka
apakah a=0 iya, maka
lagi = b
lagi = 1
function aku (2,lagi(x,y))
function aku (2,1)
apakah a=1
2=1 tidak, maka
apakah b=1
1=1 iya, maka
aku= 2 x b
aku= 2 x 1
aku = 2
perulangan yang ketiga
test (3,3) memanggil procedure test di sub program
procedure test (3,3) memanggil function aku (2,lagi(x,y))
function aku membutuhkan function lagi(x,y)
pertama mencari nilai dari function lagi (x,y)
lagi (3,3)
apakah a>b
3>3 tidak, maka
apakah a=0
3=0 tidak, maka
lagi= lagi (3 mod 3,3) {3 mod 3 = 0}
lagi (0,3)
apakah a>b
1>1 tidak, maka
apakah a=0
0=0 iya, maka
lagi = 3
function aku (2,lagi(x,y))
function aku (2,3)
apakah a=1
2=1 tidak, maka
apakah b=1
3=1 tidak, maka
aku= a x b + (aku(a-1,b) + aku(a,b-1))
a=2, b=3
aku (a-1,b)
a= a-1
a=2-1
a=1
b=3
apakah a=1
1=1 iya, maka
aku= 2 x a
aku= 2 x 1
aku= 2
aku (a, b-1)
a=2
b=b-1
b=3-1
b=2
apakah a=1
2=1 tidak, maka
apakah b=1
2=1 tidak, maka
aku= a x b + (aku (a-1,b) + aku (a,b-1))
a=2, b=2
aku (a-1,b)
a= a-1
a=2-1
a=1
b=2
apakah a=1
1=1 iya, maka
aku= 2 x a
aku= 2 x 1
aku= 2
aku (a,b-1)
a=2
b=b-1
b=2-1
b=1
apakah a=1
2=1 tidak, maka
apakah b=1
1=1 iya, maka
aku= 2 x b
aku= 2 x 1
aku= 2
aku= a x b + (aku (a-1,b) + aku (a,b-1))
aku= 2 x 2 + (2+2)
aku= 4 + 4
aku= 8
aku= a x b + (aku(a-1,b) + aku(a,b-1))
aku= 2 x 3 + ( 2 + 8 )
aku= 6 + 10
aku= 16
tampilan.
2
2
16
semoga jelas dg penjelasanku. sudah tak usahakan jelas dengan memberi huruf besar tebal, miring dan biasa.
kalau blum jelas hub. ak di [email protected]