Массив ўртачасини топишдаги хатолик
Массив элементларининг арифметик ўртачасини топиш билан боглик хатоликни кўриб чиқайлик. Мисол учун бизга куйидаги массив берилган бўлсин:
let arr = [1, 2, 3, 4, 5];
Элементларнинг ўртачасини топиш учун уларнинг йиғиндисини топиш ва уларни сонӣга бўлиш керак. Бирон дастурчи бу масалани куйидагича ечган:
let avg = 0;
for (let elem of arr) {
avg += elem / arr.length;
}
console.log(avg);
Келгила, бу ечимнинг муаммоларини кўриб чиқайлик. Техник жиҳатдан код тўғри ишлайди ва тўғри жавоб беради. Математик жиҳатдан ҳам йиғиндини сонӣга бўлиш, ҳам ҳар бир қўшилувчини сонӣга бўлиш тўғридир.
Аммо, бошқа муаммо пайдо бўлади. Иш шундаки, биз бўлиш амалини массивдаги элементлар сонича такрорлаймиз. Ва маълум бўладики, биз жуда кўп қўшимча амаллар бажарамиз, чунки бўлишни якка ёлғиз - охирида, топилган бутун йиғиндини бўлиб чиқиш мумкин эди.
Келгила, кодимизни оптималлаштирайлик:
let sum = 0;
for (let elem of arr) {
sum += elem;
}
let avg = sum / arr.length;
console.log(avg);