java中的系列总和

我正在尝试找到系列的总和。如果我得到的数字为“5”而术语的数量为“4”......那么系列就是这样(5 * 6 * 7)+(6 * 7 *8)+(7*8*9)+(8*9*10)...同样,它必须对条款的数量进行加法。我试过这段代码,但它给出了错误的输出。我去了哪里错误的?


int num=5,n=4,i,j,res=0,sum=1;

int k=num+1;

for(i=1;i<=num-1;i++)

{

    k=k-1;

    sum=1;

    for(j=1;j<=n;j++)

    {

        sum=sum*k;

        k=k+1;

    }

}

res=res+sum;

System.out.println(res);

我得到的输出是 57120,但正确的输出是 1770。


RISEBY
浏览 161回答 3
3回答

喵喵时光机

试试这个:int num = 5;int sum = 0;int n = 4;for(int i = 0; i<n ;i++) {&nbsp; int ele = 1;&nbsp; for (int k = num + i; k < num + i + n - 1; k++) {&nbsp; &nbsp; &nbsp;ele *= k;&nbsp; }&nbsp; sum += ele;&nbsp;}System.out.println(sum);

慕神8447489

您可以尝试使用 Java 8 流来解决这个问题。例如:import static java.util.stream.IntStream.range;...int num = 5, n = 4;int sum1 = range(0, n).map(l -> range(num + l, num + l + 3).reduce(1, (a, r) -> a * r)).sum();System.out.println(sum1);这打印出来:1770解释:range(0, n) // ensures that the sum operation is executed `n` times..map(l -> range(num + l, num + l + 3) // generates sequences of 3 numbers starting from `num` increased by `l`.reduce(1, (a, r) -> a * r) // calculates the product of the sequences of 3 numbers.sum() // sums the product of all three numbers

开满天机

你的代码int num=5,n=4,i,j,res=0,sum=1;int k=num+1;for(i=1;i<=num-1;i++){&nbsp; &nbsp; k=k-1;&nbsp; &nbsp; sum=1;&nbsp; &nbsp; for(j=1;j<=n;j++)&nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; &nbsp; sum=sum*k;&nbsp; &nbsp; &nbsp; &nbsp; k=k+1;&nbsp; &nbsp; }}res=res+sum;&nbsp; &nbsp;// This line should be *inside* the previous curly bracket.System.out.println(res);设置的作用sum = 1;是在添加下一项之前删除 sum 的先前值。如果您已将先前的值存储为结果 (res),这只是一个好主意。所以res = res + sum;应该在外部for循环内。由于您只是乘以 k 以上的下两个数字,因此不需要内部for循环。写吧sum += k * (k + 1) * (k + 2);请注意速记表达式:sum += ... 意思是一样的sum = sum +&nbsp; ...k++; 意思是一样的 k = k + 1;k--; 意思是一样的 k = k - 1;此外,计算机计算速度更快A < B + 1(1个减法)比锻炼更重要A <= B(2 个减法加上一个逻辑或)。所以在逻辑表达式中,我们总是想写A < B + 1就写A <= B。最后,变量或字符之间有空格的表达式比没有空格的表达式更容易阅读,即a + 1 比a+1更改代码int num = 5,&nbsp; &nbsp; n = 4,&nbsp; &nbsp; k = n,&nbsp; &nbsp; i = k,&nbsp; &nbsp; res = 0;for(i = k; i < k + n; i++) // Gives n terms, e.g. k = {num, num + 1, ..., num + n - 1}{&nbsp; &nbsp; res += k * (k + 1) * (k + 2);&nbsp; &nbsp; k++;}System.out.println(res);
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java