-
Perhatikan potongan program berikut.
var data : array[1..10] of integer = (3,9,2,6,1,4,7,8,5,10); procedure piring(n : integer); begin if (n≤10) then begin piring(n*2); piring(n*2+1); write(data[n],’ ’); end; end;
Jika statement pada baris ke 8 yaitu “
write(data[n],’ ‘)
” dipindahkan pada sebelum
statement baris ke 6, maka untuk menghasilkan output yang terurut menaik setelah
pemanggilanpiring(1)
adalah ….- (3,9,2,6,1,4,7,8,5,10)
- (1,2,8,3,6,9,10,4,5,7)
- (10,6,9,3,5,7,8,1,2,4)
- (7,4,2,1,3,6,5,9,8,10)
- (1,2,3,4,5,6,7,8,9,10)
Jika perintah write dipindah sebelum rekursi, maka
program menjadi
data[1], piring(2), piring(3)
piring(2) = data[2], piring(4), piring(5)
piring(4) = data[4], piring(8), piring(9)
= data[4], data[8], data[9]
piring(5) = data[5], piring(10)
= data[5], data[10]
piring(3) = data[3], piring(6), piring(7)
= data[3], data[6], data[7]
Sehingga urutan cetak adalah
data[1], data[2], data[4], data[8], data[9], data[5], data[10],
data[3], data[6], data[7]
Sehingga agar terurut menaik, array harus diposisikan
sesuai urutan cetak
(1,2,8,3,6,9,10,4,5,7) (B).