Chyba pri výpočte priemeru z poľa
Zvážme chybu súvisiacu s výpočtom aritmetického priemeru od prvkov pola. Nech máme napríklad dané takéto pole:
let arr = [1, 2, 3, 4, 5];
Na nájdenie priemeru od prvkov, je potrebné nájsť ich súčet a rozdeliť na množstvo. Nejský programátor už vyriešil túto úlohu nasledujúcim spôsobom:
let avg = 0;
for (let elem of arr) {
avg += elem / arr.length;
}
console.log(avg);
Pozrime sa na problémy takéhoto riešenia. Technicky kód funguje správne a dáva správnu odpoveď. Faktom je, že matematicky korektne je ako rozdeliť celý súčet na množstvo, tak a rozdeliť každý z členov na množstvo.
Avšak, vzniká iný problém. Faktom je, že budeme vykonávať delenie tolko krát, koľko prvkov je v našom poli. A vychádza, že robíme veľké množstvo zbytočných operácií, veď delenie by sa dalo vykonať na konci - raz, rozdeliť celý nájdený súčet.
Optimalizujme náš kód:
let sum = 0;
for (let elem of arr) {
sum += elem;
}
let avg = sum / arr.length;
console.log(avg);