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循環(huán)內。
由于您只是乘以 k 以上的下兩個數字,因此不需要內部for循環(huán)。寫吧
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);
添加回答
舉報