Greška u pronalaženju proseka niza
Razmotrimo grešku povezanu sa pronalaženjem aritmetičke sredine elemenata niza. Neka za primer imamo dat sledeći niz:
let arr = [1, 2, 3, 4, 5];
Da bismo pronašli prosek elemenata, potrebno je pronaći njihov zbir i podeliti ga sa količinom. Neki programer je već rešio ovaj zadatak na sledeći način:
let avg = 0;
for (let elem of arr) {
avg += elem / arr.length;
}
console.log(avg);
Hajde da razmotrimo probleme ovakvog rešenja. Tehnički, kod radi ispravno i daje tačan odgovor. Stvar je u tome što je matematički tačno i podeliti celu sumu sa količinom, i podeliti svaki od sabiraka sa količinom.
Međutim, javlja se drugi problem. Stvar je u tome da ćemo izvršiti deljenje onoliko puta koliko ima elemenata u našem nizu. I ispostavlja se da radimo veliki broj suvišnih operacija, pošto se deljenje moglo izvršiti na kraju - samo jednom, podelivši celokupnu pronađenu sumu.
Hajde da optimizujemo naš kod:
let sum = 0;
for (let elem of arr) {
sum += elem;
}
let avg = sum / arr.length;
console.log(avg);