Perhatikan kumpulan fungsi dari potongan program berikut untuk soal nomor 38 dan 39.
function sapi(kucing: integer): integer; begin if (kucing ≤ 2 ) then sapi:= 1 else sapi:= sapi(kucing div 2)+1; end; function ayam(rumput: integer): integer; begin if (rumput < 1024) then ayam:= ayam(rumput*2) + sapi(rumput) else ayam:= 0; end; function rumput(batu: integer): integer; var a, c:integer; begin a:=2; c:=1; while (batu > 0) do begin if ((batu mod 2) = 1) then c:=c*a; batu:= batu div 2; a:= a*a; end; rumput:=c; end;
-
Berapakah nilai dari
ayam(rumput(9))
?- 19
- 10
- 9
- 8
- 7
-
Berapakah nilai dari
ayam(rumput(2))
?- 44
- 42
- 8
- 2
- 1
-
Pertama, selesaikan nilai rumput(9).
batu = 9
c = 2, batu = 4, a = 4
batu = 4
batu = 2, a = 16
batu = 2
batu = 1, a = 256
batu = 1
c = 512ayam(512) = ayam(1024) + sapi(512)
ayam(1024) = 0
Sedangkan sapi(n) adalah \(\log_2(n)\). Sehingga
sapi(512) = 9 (C). -
Selesaikan rumput(2)
batu = 2
batu = 1, a = 4
batu = 1
c = 4, batu = 0, a = 16.Dengan mengambil nilai yang ada di atas, maka
ayam(4) = ayam(8) + 2
ayam(8) = ayam(16) + 3
ayam(16) = ayam(32) + 4
ayam(32) = ayam(64) + 5
ayam(64) = ayam(128) + 6
ayam(128) = ayam(256) + 7
ayam(256) = ayam(512) + 8
ayam(512) = ayam(1024) + 9
ayam(1024) = 0.
Jadi nilai keluaran yang dihasilkan adalah 44 (A).