Massivdən Ortalamanın Tapılmasında Səhv
Elementlərin arifmetik ortasının tapılması ilə əlaqədar səhvi nəzərdən keçirək. Məsələn üçün bizə aşağıdakı massiv verilib:
let arr = [1, 2, 3, 4, 5];
Elementlərin ortasını tapmaq üçün onların cəmini tapıb sayına bölmək lazımdır. Müəyyən bir proqramçı bu problemi artıq aşağıdakı şəkildə həll etmişdir:
let avg = 0;
for (let elem of arr) {
avg += elem / arr.length;
}
console.log(avg);
Gəlin bu həllin problemlərinə nəzər salaq. Texniki cəhətdən kod düzgün işləyir və düzgün cavab verir. Məsələ ondadır ki, riyazi cəhətdən düzgündür həm bütün cəmi sayına bölmək, həm də hər bir toplananı sayına bölmək.
Lakin, başqa bir problem yaranır. Məsələ ondadır ki, biz massivimizdəki elementlər qədər bölmə əməliyyatı yerinə yetirəcəyik. Və belə çıxır ki, biz çoxlu sayda lazımsız əməliyyatlar edirik, axı bölməni sona - bir dəfə, bütün tapılmış cəmi bölmək olardı.
Gəlin kodumuzu optimallaşdıraq:
let sum = 0;
for (let elem of arr) {
sum += elem;
}
let avg = sum / arr.length;
console.log(avg);