Massiivi keskmise leidmise viga
Vaatleme viga, mis on seotud massiivi elementide aritmeetilise keskmise leidmisega. Oletame näiteks, et meil on antud selline massiiv:
let arr = [1, 2, 3, 4, 5];
Elementide keskmise leidmiseks tuleb leida nende summa ja jagada see elementide arvuga. Mingi programmeerija on selle ülesande juba lahendanud järgmisel viisil:
let avg = 0;
for (let elem of arr) {
avg += elem / arr.length;
}
console.log(avg);
Vaatame sellise lahenduse probleeme. Tehniliselt töötab kood õigesti ja annab õige vastuse. Asi on selles, et matemaatiliselt on õige nii jagada kogu summat elementide arvuga, kui ka jagada iga liidetav elementide arvuga.
Siiski tekib teine probleem. Asi on selles, et me teostame jagamist nii mitu korda, kui palju elemente on meie massiivis. Ja selgub, et me teeme suure hulga lisatehteid, sest jagamise oleks võinud teostada lõpus - üks kord, jagades kogu leitud summa.
Optimeerime oma koodi:
let sum = 0;
for (let elem of arr) {
sum += elem;
}
let avg = sum / arr.length;
console.log(avg);