【问题标题】:How should I fix my for loop code for summing a range?我应该如何修复我的 for 循环代码以对范围求和?
【发布时间】:2015-07-18 10:48:15
【问题描述】:
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)?

【问题讨论】:

    标签: javascript for-loop sum range


    【解决方案1】:

    您需要将您的代码更新为以下

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

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

    【讨论】:

      【解决方案2】:

      问题在于您在开始时初始化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));

      【讨论】:

        猜你喜欢
        • 2019-09-15
        • 2016-03-05
        • 1970-01-01
        • 1970-01-01
        • 2014-08-05
        • 2021-06-19
        • 1970-01-01
        • 2021-10-25
        • 1970-01-01
        相关资源
        最近更新 更多