Ответ 1
Вы производите квадрат n1
на каждой итерации. Вместо этого вы должны квадрат i
. В качестве короткой формы sum=((sum)+(i*i));
вы можете написать sum += i * i;
Учитывая два числа n1 и n2, такие, что n2 > n1, найти сумму квадратов всех чисел от n1 до n2 (включая n1 и n2).
Мой подход:
Я попытался решить проблему, используя цикл for, который повторяется от n1
до n2
, но я получаю неправильный ответ
Ниже приведена моя функция для кода:
public int computeSumofSquares (int n1, int n2)
{
int sum=0;
if(n2>n1)
{
for(int i=n1;i<=n2;i++)
{
sum=((sum)+(n1*n1));
}
}
return sum;
//write your code here
}
Для ввода
Parameters Actual Output Expected Output
'8' '10' 192 245
Вы производите квадрат n1
на каждой итерации. Вместо этого вы должны квадрат i
. В качестве короткой формы sum=((sum)+(i*i));
вы можете написать sum += i * i;
Измените sum=((sum)+(n1*n1));
на sum=((sum)+(i*i));
, поскольку i
- это значение, увеличивающее значение.
В вашем цикле i изменяется каждый раз, но в вашем заявлении sum=((sum)+(n1*n1));
ничего не меняется, и каждый раз в вашем примере вы суммируете 8 ^ 2, и результат будет 8 * 8 + 8 * 8 + 8 * 8 = 192.
Как сказали все, если вы измените n1 на i в этом утверждении, что-то вроде sum=sum+i*i
, тогда вы получите желаемый результат.
Как уже указывали другие, вы всегда использовали нижнюю границу вашего интервала n1
для вычисления sum
(вместо переменной цикла i
).
Для полноты я отправляю решение java8:
int n1 = 8;
int n2 = 10;
int sumOfSquares = IntStream.rangeClosed(n1, n2).map(i -> i * i).sum();
System.out.println(sumOfSquares); // 245
Пожалуйста, просмотрите IntStream
docs для дальнейшей справки.