繁体   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