Chyba při výpočtu průměru pole
Podívejme se na chybu spojenou s výpočtem aritmetického průměru prvků pole. Pro příklad mějme zadané toto pole:
let arr = [1, 2, 3, 4, 5];
Pro nalezení průměru prvků je třeba najít jejich součet a vydělit počtem. Jistý programátor tento úkol vyřešil následujícím způsobem:
let avg = 0;
for (let elem of arr) {
avg += elem / arr.length;
}
console.log(avg);
Podívejme se na problémy tohoto řešení. Technicky kód funguje správně a dává správnou odpověď. Jde o to, že matematicky je korektní jak vydělit celý součet počtem, tak vydělit každý ze sčítanců počtem.
Avšak objevuje se jiný problém. Jde o to, že budeme provádět dělení tolikrát, kolik je prvků v našem poli. A vychází nám, že děláme velké množství zbytečných operací, protože dělení bychom mohli provést až na konci - jednou, vydělením celého nalezeného součtu.
Pojďme optimalizovat náš kód:
let sum = 0;
for (let elem of arr) {
sum += elem;
}
let avg = sum / arr.length;
console.log(avg);