var data: array[1..10] of integer = (8, 12, 16, 20, 12, 14, 16, 20, 20, 22);
function itik(a, b: integer):integer;
begin
if b = 0 then itik := a
else itik := itik(b,a mod b);
end;
function bebek(x: integer):integer;
begin
if x > 10 then bebek:=0
else bebek := itik(data[x], bebek(x * 2));
end;
begin
writeln(bebek(1));
end.
Apakah keluaran dari program di atas? a. 1 b. 2 c. 3 d. 4 e. 5
nih program nyari GCD dari 8 sama 12, jadi jawabannya 4
var data: array[1..10] of integer = (8, 12, 16, 20, 12, 14, 16, 20, 20, 22);
function itik(a, b: integer):integer;
begin
if b = 0 then itik := a
else itik := itik(b,a mod b);
end;
function bebek(x: integer):integer;
begin
if x > 10 then bebek:=0
else bebek := itik(data[x], bebek(x * 2));
end;
begin
writeln(bebek(1));
end.
bebek(1) = itik(8,bebek(2) = itik(8,20) = itik(20,4) = itik(4, 0) = 4
bebek(2) = itik(20,bebek(4)) = itik(20,20) = 20
bebek(4) = itik(20,bebek(8) = itik(20,20) = itik(20,0) = 20
bebek(8) = itik(20,bebek(16)) = itik(20,0) = 20
array di atas di awali dari 1 gan bukan 0
Masuk untuk menulis jawaban
d
fungsi itik jika kita perhatikan, fungsi tersebut mencari fpb dari dua bilangan:
bebek(1) = itik(8,bebek(2)) = 4 (ngisinya dari belakang)
bebek(2) = itik(12,bebek(4)) = 4
bebek(4) = itik(20, bebek(8)) = 20
bebek(8) = itik(20, bebek(16)) = itik(20,0) = 20
jadi bebek(1) akan mengeluarkan nilai 4 (D)
belajar rekursif gini rekomen dimana ya bro? ada bukunya mungkin? soalnya masih bingung dengan cara menjawab soal rekursif
Belajar rekursive di video ini aja, aku langsung paham :)
https://www.youtube.com/watch?v=6Dh-RL__uN4
@Annisa Rizky lucu lu kontol
Always thing logic
array di pascal gk harus dari 0 bro, itu kan udh ditulis array[1..10], jadi startnya dari 1, lagian itu juga bukan pascal tpi pseudo code
bang bukannya array seharusnya mulai dari 0 yaa? jadi data[1] = 12 bkn 8