我应该如何修复for循环代码以求求范围?

时间:2015-07-18 10:48:16

标签: javascript for-loop sum range

  workaroundExtendedFamily(betar)
  workaroundExtendedFamily(ocat, theta = 1)

嘿伙计们,我只是想知道如何在javascript中使用for循环对范围进行求和。我在这里有什么作用,但是它给了我56而不是55.我应该在start + = i中改变它以使它能够得到(1 + 2 + 3 ... + 10)的总和而不是(1 + 1 + 2 + 3 + 4 .... + 10)?

2 个答案:

答案 0 :(得分:1)

您需要将代码更新为以下

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

注意:让我们说你的开始和结束是1.所以,在这种情况下,你的循环将执行一次并添加1开始并将其更新为2.因此,你必须从1开始执行你的循环。

答案 1 :(得分:0)

问题在于您在开始时初始化i = start,并将结果存储为start += i。因此,actual resultexpected + start

解决方案1:对结果使用temp变量并返回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));

相关问题