Diberikan potongan program sebagai berikut, berapakah hasil dari Proses(11)?
function Proses(x : integer) : integer; begin if(x <= 1) then Proses := x else Proses := Proses(x div 2 * x mod 2) + Proses(x div 2 + x mod 2); end;
proses(11) = proses(1)+proses(6)=4
= 1+proses(0)+proses(3)=3
= 1+0+proses(1)+proses(2)=2
=1+0+1+proses(0)+proses(1) =1
=1+0+1+0+1=3
Eh, x div 2 * x mod 2 itu kerjanya (x div 2)*(x mod 2) atau gimana? ._. Saya coba compile di fpc, semua nilai x div 2 * x mod 2 itu 0 walaupun x nya ganjil... ._. Padahal pas osp saya kiranya (x div 2)*(x mod 2) ._.
Mungkin karena urutan kali lebih didahulukan
jadi x div 2x mod 2

if(x <= 1) then Proses := x else Proses := Proses(x div 2 * x mod 2) + Proses(x div 2 + x mod 2);
Hasil Proses(11) ?
Proses( 11 div 2 * 11 mod 2) + proses (11 div 2 + 11 mod 2)
Proses(5*1) + Proses (5+1)
Proses(5) + Proses(6)
Proses(2*1) + proses(2+1) + Proses(3*0) + Proses(3*1)
Proses(2) + Proses(3) + Proses(0) + Proses(3)
Proses(1*0)+proses(1+0) + Proses(1*1)+Proses(1+1) + Proses(0) + Proses(1*1)+Proses(1+1)
Proses(0)+Proses(1) + Proses(1)+Proses(2) + Proses(0) + Proses(1)+Proses(2)
Proses(0)+Proses(1)+Proses(1)+Proses(1*0)+Proses(1*1)+Proses(0)+Proses(1)+ Proses(1*0)+Proses(1*1)
Proses(0)+Proses(1)+Proses(1)+ Proses(0)+Proses(1)+Proses(0)+Proses(1)+Proses(0)+Proses(1)
0 + 1 + 1 + 0 + 1 + 0 + 1 + 0 + 1
=5
Great?
Masuk untuk menulis jawaban
Salah sepertinya mas

Salahnya dimana?
itu bukan ((x div 2) * (x mod 2)) tapi (x div 2 * x mod 2) jadi x di div 2 dulu lalu dikali x baru di mod 2
misal jika x=11 maka
11 div 2=5 lalu
5 * 11=55 baru di mod 2
55 mod 2=1 jadi manggil proses(1)=1
5
kamu nub GGWP