我应该如何修复用于求和范围的 for 循环代码?

How should I fix my for loop code for summing a range?

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

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

大家好,我只是想知道如何在 javascript 中使用 for 循环对范围求和。我这里的东西有效,但它给了我 56,而不是 55。我应该在 start += i 中改变什么才能让它给我 (1 + 2 + 3... + 10) 的总和的 ( 1 + 1 + 2 + 3 + 4.... + 10)?

您需要将代码更新为以下内容

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

注意:假设您的开始和结束是 1。因此,在这种情况下,您的循环将执行一次并添加 1 开始并更新它到2。因此,您必须从下一个开始执行循环。

问题出在您在开始时初始化 i = start 并将结果存储为 start += i 的循环中。因此你的 actual resultexpected + start.

解决方案 1:使用 temp 变量作为结果和 return 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));

解决方案 2:没有 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));