Diberikan fungsi seperti di bawah ini. Berapakah nilai dari f(8, 4)? {tuliskan jawaban sesuai dengan output yang
dihasilkan}
var e : array[1..10] of integer = (6, 7, 4, 5, -1, 4, -1, 3, 1, 9);
function f(a, b: integer): integer;
begin
if a = b then
f := 1
else if e[a] = -1 then
f := 0
else f := 2 * f(e[a], b);
end;
array [1...10] of integer:= (6,7,4,5,-1,4,-1,3,1,9)
f( (8 = a,4 = b)
jika a (8) = b (4) maka f =1
jika salah
jika array ke 8 = -1 maka f = 0
jika salah
f = 2 * f ( array ke 8 = 3 , b = 4 ) kita umpamakan sebagai PERSAMAAN X
maka f = 2*f(3,4)
lalu
f= 2*f( array ke 3 = 4 , b= 4 )
maka f = 2* f(4,4) sesuai dengan syarat pertama maka f (4,4) = 1 karena nilai a dan nilai b sama.
maka f = 2 * 1 = 2
jadi f = 2
lalu masuk kembali ke PERSAMAAN X
maka f = 2 * f( (8,4 ) yaitu 2
maka f = 2*2 = 4
JADI NILAI DARI f(8,4) ADALAH 4
Simulasikan saja algoritmanya
f(8, 4)
Karena 8 != 4 dan e[8] = 3, maka
f(8, 4) = 2 * f(e[8], 4)
f(8, 4) = 2 * f(3, 4)
Karena 3 != 4 dan e[3] = 4, maka
f(8, 4) = 2 * (2 * f(e[3], 4))
f(8, 4) = 4 * f(4, 4)
Karena 4 = 4, maka
f(8, 4) = 4 * 1
f(8, 4) = 4
Masuk untuk menulis jawaban