Математическая прогрессия неправильно увеличивается
Метод некорректно выдает значения, точнее прогрессия неправильно увеличивается.
Пояснение : Существует три входных параметра : number - первое неизменяемое число в последовательности, addition - число, которое каждый раз увеличивается на саму себя, count - количество прохождений цикла. Приведу как пример : Входные параметры (2, 3, 5), ожидаемое 40, т.к. 2 + (2+3) + (2+3+3) + (2+3+3+3) + (2+3+3+3+3) равняется 40. Но в моем случае выходит 203, сама строчка каждого прохода выглядит так : 7 15 29 55 105 203.
public static int Calculate(int number, int addition, int count)
{
int sum = 0;
for (int i = 0; i <= count; i++)
{
sum = 2;
sum = sum + (number + addition);
addition+= addition;
}
return sum;
}
Ответы (2 шт):
Вы не прибавляете первоначальное значение addition к текущему на каждой итерации, а увеличиваете текущее значение этой пременной в два раза.
function sumN(number, delta, count) {
let sum = 0;
let dN = 0;
for (let i = 0; i < count; i++) {
sum = sum + (number + dN);
dN += delta;
}
return sum;
}
console.log(sumN(2, 3, 5));
А можно вообще без цикла, если вспомнить форму сложения арифметической прогрессии:
number * count + addition * count * (count - 1) / 2