Напишите программу для поиска суммы квадратов всех чисел при следующих условиях?

Учитывая два числа 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

Ответы

Ответ 1

Вы производите квадрат n1 на каждой итерации. Вместо этого вы должны квадрат i. В качестве короткой формы sum=((sum)+(i*i)); вы можете написать sum += i * i;

Ответ 2

Измените sum=((sum)+(n1*n1)); на sum=((sum)+(i*i));, поскольку i - это значение, увеличивающее значение.

Ответ 3

В вашем цикле i изменяется каждый раз, но в вашем заявлении sum=((sum)+(n1*n1)); ничего не меняется, и каждый раз в вашем примере вы суммируете 8 ^ 2, и результат будет 8 * 8 + 8 * 8 + 8 * 8 = 192.

Как сказали все, если вы измените n1 на i в этом утверждении, что-то вроде sum=sum+i*i, тогда вы получите желаемый результат.

Ответ 4

Как уже указывали другие, вы всегда использовали нижнюю границу вашего интервала 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 для дальнейшей справки.