3 回答
TA贡献1846条经验 获得超7个赞
试试这个:
int num = 5;
int sum = 0;
int n = 4;
for(int i = 0; i<n ;i++) {
int ele = 1;
for (int k = num + i; k < num + i + n - 1; k++) {
ele *= k;
}
sum += ele;
}
System.out.println(sum);
TA贡献1780条经验 获得超1个赞
您可以尝试使用 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
TA贡献1786条经验 获得超13个赞
你的代码
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; // 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 + ...
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,
n = 4,
k = n,
i = k,
res = 0;
for(i = k; i < k + n; i++) // Gives n terms, e.g. k = {num, num + 1, ..., num + n - 1}
{
res += k * (k + 1) * (k + 2);
k++;
}
System.out.println(res);
添加回答
举报