Massiv o'rtacha qiymatini topishdagi xato
Massiv elementlarining arifmetik o'rtachasini topish bilan bog'liq xatoni ko'rib chiqaylik. Misol uchun, bizga quyidagi massiv berilgan deb faraz qilaylik:
let arr = [1, 2, 3, 4, 5];
Elementlarning o'rtachasini topish uchun ularning yig'indisini topib, soniga bo'lish kerak. Ma'lum bir dasturchi bu masalani quyidagicha yechgan:
let avg = 0;
for (let elem of arr) {
avg += elem / arr.length;
}
console.log(avg);
Keling, bunday yechimning muammolarini ko'rib chiqaylik. Texnik jihatdan kod to'g'ri ishlaydi va to'g'ri javob beradi. Gap shundaki, matematik jihatdan ham butun yig'indini songa bo'lish, ham har bir qo'shiluvchini alohida-alohida songa bo'lish to'g'ridir.
Biroq, boshqa muammo paydo bo'ladi. Gap shundaki, biz bo'lish amalini massivimizda qancha element bo'lsa, shuncha marta bajaramiz. Ma'lum bo'lishicha, biz ko'p miqdorda ortiqcha amallarni bajarmoqdamiz, chunki bo'lishni oxirida - bir marta bajarish mumkin edi, topilgan butun yig'indini bo'lish orqali.
Keling, kodimizni optimallashtiramiz:
let sum = 0;
for (let elem of arr) {
sum += elem;
}
let avg = sum / arr.length;
console.log(avg);