繁体   English   中英

在下列条件下编写程序以查找所有数字的平方和?

[英]Write a program to find sum of squares of all numbers given the following conditions?

给定两个数字n1和n2使得n2> n1,找到从n1到n2(包括n1和n2)的所有数字的平方和。

我的方法:

我尝试使用从n1n2迭代的for循环来解决问题,但我得到了错误的答案

下面是我的代码函数:

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=((sum)+(i*i)); 你可以写sum += i * i;

改变sum=((sum)+(n1*n1)); sum=((sum)+(i*i)); 因为i是增值的价值。

changes every time but in your statement sum=((sum)+(n1*n1)); 在你的循环中, 每次都会改变,但在你的陈述中sum=((sum)+(n1*n1)); 没有任何变化,每次在你的例子中你总和8 ^ 2,结果将是8 * 8 + 8 * 8 + 8 * 8 = 192。

to in that statement, something like sum=sum+i*i , then you will get the result you want. 正如大家所说,如果你在那个陈述中将改为 ,就像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文档以获取进一步的参考。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM