Napaka pri iskanju povprečja matrike
Oglejmo si napako, povezano z iskanjem aritmetične sredine elementov matrike. Za primer imamo dano naslednjo matriko:
let arr = [1, 2, 3, 4, 5];
Da bi našli povprečje elementov, moramo najti njihovo vsoto in deliti s številom elementov. Nek programer je to težavo že rešil na naslednji način:
let avg = 0;
for (let elem of arr) {
avg += elem / arr.length;
}
console.log(avg);
Oglejmo si težave te rešitve. Tehnično koda deluje pravilno in daje pravilen odgovor. Dejstvo je, da je matematično pravilno tako deliti celotno vsoto s številom elementov, kot tudi deliti vsak seštevanec posebej s številom elementov.
Vendar se pojavi druga težava. Gre za to, da bomo deljenje izvajali tolikokrat, kolikor je elementov v naši matriki. In izkaže se, da opravljamo veliko število nepotrebnih operacij, saj bi lahko deljenje izvedli na koncu - enkrat, tako da bi delili celotno najdeno vsoto.
Optimizirajmo našo kodo:
let sum = 0;
for (let elem of arr) {
sum += elem;
}
let avg = sum / arr.length;
console.log(avg);