Perhatikan potongan program berikut!
var N,hasil: integer;
procedure solve(X:integer);
begin
if (X>1) then
begin
hasil:=hasil+1;
solve(X div 2 + X mod 2);
end;
end;
begin
readln(N);
hasil:=0;
solve(N);
writeln(hasil);
end.
Bila diberi masukan bilangan 77, maka program akan memberikan keluaran
karena jika x>1 maka s(x div 2 + x mod 2) sehingga x=77 adalah s(77).............................................................................................h=0 s(77 div 2 + 77 mod 2) = s(28+1) =s(39).......................................h=1 s(39 div 2+ 39 mod 2)=s(20).........................................h=2 s(20 div 2 + 20 mod 2)=s(10)...............................h=3 s(10 div 2 + 10 mod 2)=s(5)..........................h=4 s(5 div 2+ 5 mod 2)=s(3).........................h=5 s(3 div 2 + 3 mod 2)=s(2)...................h=6 s(2 div 2 + 2 mod 2)=s(1).............h=7
jawaban: 7
Saat X > 1 :
X = 77
X = 39
X = 20
X = 10
X = 5
X = 3
X = 2
TOTAL = 7
SMA IT AL BINAA ISLAMIC BOARDING SCHOOL
7
Masuk untuk menulis jawaban
X pertama 77 Hasil langsung +1 menjadi 1
77 div 2 + 77 mod 2 = 38 + 1 = 39 Hasil langsung +1 menjadi 2
39 div 2 + 39 mod 2 = 19 + 1 = 20 Hasil langsung +1 menjadi 3
20 div 2 + 20 mod 2 = 10 + 0 = 10 Hasil langsung +1 menjadi 4
10 div 2 + 10 mod 2 = 5 + 0 = 5 Hasil langsung +1 menjadi 5
5 div 2 + 5 mod 2 = 2 + 1 = 3 Hasil langsung +1 menjadi 6
3 div 2 + 3 mod 2 = 1 + 1 = 2 Hasil langsung +1 menjadi 7
2 div 2 + 2 mod 2 = 1 + 0 = 1 (Sudah tidak masuk IF lagi)