Fejl ved beregning af gennemsnit fra array
Lad os overveje en fejl relateret til beregning af det aritmetiske gennemsnit af elementerne i et array. Lad os for eksempel have følgende array:
let arr = [1, 2, 3, 4, 5];
For at finde gennemsnittet af elementerne skal man finde deres sum og dividere med antallet. En programmør har allerede løst denne opgave på følgende måde:
let avg = 0;
for (let elem of arr) {
avg += elem / arr.length;
}
console.log(avg);
Lad os overveje problemerne med denne løsning. Teknisk set fungerer koden korrekt og giver det rigtige svar. Faktum er, at det matematisk set er korrekt at dividere hele summen med antallet, såvel som at dividere hvert enkelt led med antallet.
Der opstår dog et andet problem. Faktum er, at vi vil udføre division lige så mange gange, som der er elementer i vores array. Og det viser sig, at vi udfører et stort antal unødvendige operationer, for division kunne være udført til sidst - én gang, ved at dividere hele den fundne sum.
Lad os optimere vores kode:
let sum = 0;
for (let elem of arr) {
sum += elem;
}
let avg = sum / arr.length;
console.log(avg);