Deskripsi Untuk Soal Nomor 42 dan 43
const x : array[0..9] of integer = (2,6,4,3,3,7,7,3,4,8); function inijuga(a: integer; b: integer): integer; var t : integer; begin if (a > b) then inijuga := inijuga(b,a); if (a = b) then inijuga := x[a]; else begin t := (a+b) div 2; inijuga := inijuga(a, t) + inijuga(t+1, b); end; end;
Pemanggilan melalui perintah “writeln(inijuga(1,4))” akan mencetakkan harga berapakah?
(A) 44
(B) 47
(C) 16
(D) 14
(E) 98
Pemanggilan melalui perintah “writeln(inijuga(0,9))” akan mencetakkan harga berapakah?
(A) 44
(B) 47
(C) 16
(D) 14
(E) 98
Dari fungsi kode tersebut bisa disimpulkan:
1. jika A>B, tukar nilai A dengan B
2. jika A=B, maka ambil nilai dari array ke-A
3. t = (A+B) dibagi 2 tanpa sisa / di-floor
4. Fungsi inijuga = inijuga(A,t) + inijuga(t+1,B) Prinsip Rekursi sampai mengambil nilai dari Array
No. 42 Jawaban = 16 (C)
dengan memasukkan inijuga(1,4) ke fungsi inijuga = inijuga(A,t) + inijuga(t+1,B), kita mendapatkan
t = 5 div 2 = 2, sehingga menjadi
inijuga (1,2) + injuga (3,4) karena A masih belum sama dengan B, maka merekursi lagi menjadi
t = 3 div 2 =1 untuk pertama dan t = 7 div 2 = 3 untuk yang kedua, sehingga menjadi
inijuga (1,1) + inijuga(2,2) + inijuga(3,3) + inijuga(4,4) = 6+4+3+3 = 16 (ingat array dimulai dari 0, bukan dari 1)
43. Jawaban = 47 (B)
dari no 42 kita sebenarnya tahu bahwa fungsi inijuga(A,B) adalah menjumlahkan suku dari array ke-A sampai ke-B
sehingga inijuga(0,9) adalah menjumlahkan suku ke-0 sampai ke-9 dari array
jumlah = 47
42. C. 16
43. B. 47
Masuk untuk menulis jawaban