我正在尝试用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);
这确实有效!但我发现很难按照指定的方式完成它。任何指示都会很棒。
最佳答案
在计算阶乘时,请保留迄今为止该系列的运行总计。每当 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 时的余数 - 换句话说,检查我们要达到的阶乘,并相应地执行正确的操作。
关于java - 使用 Java 交替阶乘项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22931938/