【问题标题】: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 result 是expected + 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));