Feil ved beregning av gjennomsnitt fra en array
La oss se på en feil relatert til beregning av aritmetisk gjennomsnitt fra elementene i en array. La oss for eksempel si at vi har følgende array:
let arr = [1, 2, 3, 4, 5];
For å finne gjennomsnittet av elementene, må du finne summen deres og dele på antallet. En programmerer har allerede løst dette problemet på følgende måte:
let avg = 0;
for (let elem of arr) {
avg += elem / arr.length;
}
console.log(avg);
La oss se på problemene med denne løsningen. Teknisk sett fungerer koden riktig og gir riktig svar. Saken er at det matematisk er korrekt å både dele hele summen på antallet, og å dele hvert av leddene på antallet.
Imidlertid oppstår et annet problem. Saken er at vi vil utføre divisjon like mange ganger som det er elementer i arrayen vår. Og det viser seg at vi gjør et stort antall unødvendige operasjoner, ettersom divisjonen kunne ha blitt utført til slutt - én gang, ved å dele hele den funnet summen.
La oss optimalisere koden vår:
let sum = 0;
for (let elem of arr) {
sum += elem;
}
let avg = sum / arr.length;
console.log(avg);