我应该如何修复用于求和范围的 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 result
是 expected + 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));
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 result
是 expected + 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));