Если вам нужно добавить нечетные числа от 1 до 20, то вам нужно i+=2
в качестве третьего параметра для for и нужно инициализировать переменную в 1, чтобы получить правильный результат:
var sum = 0;
for (var i = 1; i <= 20; i += 2) {
sum += i;
}
Когда у вас есть
i + = 2
2 добавляется к i
, а результат сохраняется в i
.При попытке
var i, sum=0;
for (i=2; i<=20; i*2){
sum=sum+i;
}
i*2
вычисляет значение, которое в два раза больше i
, но оно не изменит значение i
, поэтому вместо этого это «сработает»:
var i, sum=0;
for (i=2; i<=20; i*=2){
sum=sum+i;
}
, где
i *= 2
не только вычисляет значение в два раза больше i
, но также сохраняет результат в i
.Однако даже если это будет выполнено, результат не будет корректным, поскольку вы используете неправильную формулу.
Кроме того, вы можете вычислить результат без использования for
:
1 + 2 + ... + n = n * (n + 1) / 2
Предполагая, что n является парой: и так как мы знаем, что мы «пропускаем» половину чисел ивсе номера пар больше точно на 1, чем предыдущие числа с ошибками, мы можем вычесть половину последовательности
n * (n + 1) / 2 - n / 2 = (n * (n+ 1) - n) / 2 = (n * (n + 1 - 1)) / 2 = n * n / 2
, и теперь мы имеем ровно двойное значение того, что нам нужно,итоговая формула выглядит так:
sum = n * n / 4;
Давайте сделаем это function
function getOddSumUpTo(limit) {
if (limit % 2) limit ++;
return limit * limit / 4;
}
, а затем:
var sum = getOddSumUpTo(20);
Обратите внимание, что мы увеличиваем предел, если онстранный.