function needToAdd(start, end) {
   for(var i = start; i <= end; i++) {
    start += i;
}
return start
};

console.log(needToAdd(1, 10));
// 56

Hé les gars, je veux juste savoir comment je peux additionner les plages en utilisant une boucle for en javascript. Ce que j'ai ici fonctionne, mais cela me donne 56, au lieu de 55. Que dois-je changer dans start + = i pour que cela me donne la somme de (1 + 2 + 3 ... + 10) à la place sur (1 + 1 + 2 + 3 + 4 .... + 10)?

0
joyfulchute 18 juil. 2015 à 13:48

2 réponses

Meilleure réponse

Vous devez mettre à jour votre code pour suivre

function needToAdd(start, end) {
   for(var i = start+1; i <= end; i++) {
    start += i;
}
return start
}

Remarque : disons que votre début et votre fin sont 1. Donc, dans ce cas, votre boucle se serait exécutée une fois et aurait ajouté 1 pour démarrer et l'aurait mise à jour à 2. Par conséquent, vous devez exécutez votre boucle à partir du 1 suivant pour démarrer.

1
Nikhil Aggarwal 18 juil. 2015 à 10:49

Le problème est en boucle, vous avez initialisé i = start au début et vous avez stocké le résultat sous la forme start += i. Par conséquent, votre actual result est expected + start.

Solution 1: utilisez la variable temp pour le résultat et le retour temp.

var sumInRange = function(a, b) {
  var i = t = b;
  while (a <= --i) t += i;
  return t;
};

alert(sumInRange(1, 5));
alert(sumInRange(1, 10));

Solution 2: sans variable temp

var sumInRange = function(a, b) {
  if (a === b) return a;
  return b + sumInRange(a, b - 1);
};

alert(sumInRange(1, 5));
alert(sumInRange(1, 10));
0
18 juil. 2015 à 11:06