[英]Alternating factorial terms using Java
我正在嘗試用Java編寫一個循環,該循環可以輸出具有這種形式的序列的總和... 1! -3! + 5! – 7! + ...最多n個(用戶將n表示為正奇數)。 例如,如果用戶為n輸入5,則該系列應計算1的總和! -3! + 5! (困難的部分)並通過基本的打印語句(簡單的部分)向用戶顯示。 如果用戶給出9,則計算得出的總和將為1! -3! + 5! -7! + 9!
為簡便起見,假設用戶始終在任何時候都輸入正奇數。 我只是擔心現在嘗試使用循環來求和。
我想出的最接近的代碼來做到這一點...
int counter = 1;
int prod = 1;
n = console.nextInt();
while (counter <= n)
{
prod = prod * counter;
counter++;
}
System.out.println(prod);
這確實是n !,但是我發現很難按規定執行它。 任何指針都很棒。
在計算階乘時,請保持到目前為止該系列的運行總計。 每當counter % 4 == 1
,將階乘添加到運行總計中。 每當counter % 4 == 3
,從運行總計中減去階乘。
您說“任何指針”-我認為那意味着您不希望我為您編寫代碼。
更新
這與您的原始代碼緊密相關,因此您將盡可能地容易理解。 我已經更改了我需要更改的最低要求,以使它正常工作。
int counter = 1;
long prod = 1;
long total = 0;
n = console.nextInt();
while (counter <= n)
{
prod = prod * counter;
if( counter % 4 == 1 ) {
total += prod;
} else if (counter % 4 == 3) {
total -= prod;
}
counter++;
}
System.out.println(total);
首先,請注意我將prod
更改為long
。 那是因為階乘變得非常快。 使用BigInteger
甚至會更好,但是我想您還沒有了解這些。
現在,有兩個條件,何時將prod
添加到總數中,以及何時從總數中減去prod
。 兩者都通過檢查counter
除以4時的余數來進行工作-換句話說,檢查我們要處理的階乘,並相應地執行正確的操作。
首先,您需要引入一個變量int sum = 0;
存儲備用序列的值。
要僅對第二個值求和,應跳過第二個值。 您可以使用模運算來檢查它,例如if( counter % 2 == 1 )
。
如果是這樣,則可以將prod的當前值加/減到總和。
要獲得交替部分,可以使用boolean positive = true;
像這樣:
if( positive ) {
sum += prod;
} else {
sum -= prod;
}
positive = !positive;
基於boolean
,可以對prod進行添加或減去。 該值隨后更改。
因為階乘會變得非常大,所以最好使用long
類型的變量。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.