Vidurkio radimo iš masyvo klaida
Panagrinėkime klaidą, susijusią su aritmetinio vidurkio radimu iš masyvo elementų. Tarkime, pavyzdžiui, kad duotas toks masyvas:
let arr = [1, 2, 3, 4, 5];
Norint rasti elementų vidurkį, reikia surasti jų sumą ir padalinti iš kiekio. Kažkoks programuotojas jau išsprendė šią užduotį taip:
let avg = 0;
for (let elem of arr) {
avg += elem / arr.length;
}
console.log(avg);
Pažiūrėkime į šio sprendimo problemas. Techniškai kodas veikia teisingai ir pateikia teisingą atsakymą. Esmė ta, kad matematiškai teisinga ir padalinti visą sumą iš kiekio, ir padalinti kiekvieną iš dėmenų iš kiekio.
Tačiau iškyla kita problema. Esmė ta, kad mes atliksime dalybą tiek kartų, kiek elementų yra mūsų masyve. Ir išeina, kad mes atliekame didelį kiekį nereikalingų operacijų, juk dalybą galima buvo atlikti pabaigoje - vieną kartą, padalinus visą rastą sumą.
Optimizuokime mūsų kodą:
let sum = 0;
for (let elem of arr) {
sum += elem;
}
let avg = sum / arr.length;
console.log(avg);