OSP 2013

  1. Perhatikan potongan program di bawah ini!
    procedure f(x: longint; y: longint; z: longint);
        begin
            if (y = 0) then
                writeln(z)
            else
            begin
                if (y mod 2 = 1) then
                    z := z + x;
                f(2*x, y div 2, z)
            end;
        end;
    
    Berapakah bilangan yang tercetak dilayar jika dilakukan pemanggilan f(15,97,0)?

    Jika y merupakan bilangan ganjil, nilai z akan bertambah sebanyak x dan setiap pemanggilan prosedur tersebut akan mengalikan nilai x dengan 2 dan membagi nilai y dengan 2 sampai y bernilai 0.

    f(15,97,0) = f(30,48,15)
    f(30,48,15) = f(60,24,15)
    f(60,24,15) = f(120,12,15)
    f(120,12,15) = f(240,6,15)
    f(240,6,15) = f(480,3,15)
    f(480,3,15) = f(960,1,495)
    f(960,1,495) = f(1920,0,1455)

    Karena z bernilai 1455 saat y = 0, maka bilangan yang tercetak adalah 1455.

Share Now:

5 2 votes
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!