使用Java的交替因子术语

时间:2014-04-08 08:45:54

标签: java loops series factorial

我正在尝试用Java编写一个循环,它可以输出具有这种形式的系列的总和...... 1! -3! + 5! - 7! + ...最多n(用户将n作为正奇数)。例如,如果用户输入5作为n,则系列应计算总和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!,但我发现很难按规定完成它。任何指针都会很棒。

2 个答案:

答案 0 :(得分:1)

在计算阶乘时,到目前为止保持系列的总计。每当counter % 4 == 1时,将factorial添加到运行总计中。每当counter % 4 == 3时,从运行总计中减去因子。

你说&#34;任何指针&#34; - 我认为这意味着你希望我为你编写代码。

<强>更新

这非常基于您的原始代码,因此您可以尽可能轻松地理解。我已经改变了我需要改变的最低限度,以使其正常工作。

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时的余数来工作 - 换句话说,检查我们要处理的因子,并相应地进行正确的操作。

答案 1 :(得分:0)

首先,您需要引入变量int sum = 0;来存储备用系列的值。

要仅对每秒的值求和,您应该跳过每秒的值。您可以使用模运算来检查,例如if( counter % 2 == 1 )

如果确实如此,您可以将prod的当前值加/减到总和。

要获得交替部分,您可以使用boolean positive = true;,如下所示:

if( positive ) {
    sum += prod;
} else {
    sum -= prod;
}
positive = !positive;

根据boolean,可以添加或减去prod。之后价值会发生变化。

因为阶乘变得非常快,所以最好使用long类型的变量。