簡體   English   中英

使用Java交替階乘項

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM