Soal dan Pembahasan OSK Komputer 2014

Perhatikan fungsi-fungsi berikut untuk soal nomor 32 dan 33.

function mangga(rambutan : integer) : integer;
begin
	if (rambutan = 1) then mangga := 1 else
	if (rambutan mod 2 = 1) then mangga := mangga(3 * rambutan + 1)
	else mangga := mangga(rambutan div 2);
end;

function jeruk(anggur, melon : integer) : integer;
begin
	if (melon = 1) then jeruk := 0 else
	jeruk := mangga(anggur) * anggur + jeruk(anggur, melon - 1);
end;
  1. Berapakah hasil pemanggilan fungsi mangga(49) ?

      1. 1
      2. 7
      3. 14
      4. 21
      5. 49
  2. Berapakah hasil pemanggilan fungsi jeruk(25, 20) ?

      1. 425
      2. 450
      3. 475
      4. 500
      5. 525

  1. Fungsi mangga pasti akan mengembalikan nilai 1.
    Karena jika bilangannya adalah ganjil, maka fungsi
    melakukan rekursi dengan 3x parameter sebelumnya + 1.
    Sedangkan jika genap, parameter akan dibagi 2.
    Jika awalnya parameter bernilai 49, maka
    49 → 148 → 74 → 37 → 112 → 56 →
    28 → 14 → 7 → 22 → 11 → 34 →
    17 → 52 → 26 → 13 → 40 → 20 → 10 → 5 → 16
    8 → 4 → 2 → 1.

  2. Seperti sudah dijelaskan sebelumnya bahwa fungsi
    mangga akan selalu mengembalikan nilai 1. Sehingga
    dalam perkalian tidak akan berpengaruh.

    Fungsi jeruk akan melakukan rekursi dengan mengurangi
    parameter kedua (melon) sebanyak 1. Sehingga
    program akan mengembalikan nilai anggur*(melon-1).

    Dengan demikian jeruk(25,20) = 25*(20-1) = 475 (C).

Share Now:

5 1 vote
Article Rating
Subscribe
Notify of
guest
0 Comments
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x

Follow TikTok Kami @cahinfor

Pembahasan soal tahun 2023 sudah tersedia di TikTok Kami loh!