我已经注释了我的代码,无法理解错误所在:
function testWhile(a) {
var x = 1; // we count from 1
var sum = 0; // first, sum equals 0
while (x <= a) { // we have a condition from 1 to a
x++; // we add 1 because we move ahead
if (x % 2 === 0) { // we check whether it is even
sum = x + sum; // we refresh the sum
}
}
return sum;
} // we return sum
答案 0 :(得分:1)
就像@Cerbrus所说的那样,您的代码丢失了}
。但是,有一种更好的方法可以解决您的问题。只使用求和公式。
function testWhile(a) {
if (a % 2 == 1)
return (2 + (a - 1)) / 2 * ((a - 1) / 2);
return (2 + a) / 2 * (a / 2);
}
答案 1 :(得分:-1)
尽管建议使用更好的方法here,但是代码问题在于x++
操作之前的modulas
条件,这会导致额外添加最后一个偶数。
通过在 while循环末尾移动 x ++ 可以使用您的代码:
function testWhile(a) {
var x=1;// we count from 1
var sum=0;// first, sum equals 0
while (x<=a){ //we have a condition from 1 to a
if (x % 2 === 0) {//we check whether it is even
sum=x+sum;//we refresh the sum
}
x++; //we add 1 because we move ahead
}
return sum;//we return sum
}
console.log(2==testWhile(3));
console.log(12==testWhile(6));