java - 使用 Java 交替阶乘项

标签 java loops series factorial

我正在尝试用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/

相关文章:

java - 队列满错误,与多个消费者、生产者一起工作

java - 在 toString 类中使用 for 循环返回多个数组

python - 删除Python列表中的循环

python - 获取 Pandas 系列字符串的第一个元素

python - 如何比较系列中的两个值,而不是系列对象? Python 3.x

java - 无法关闭 Eclipse 中的编辑器选项卡

java - 在Android中创建字节数组的ArrayList

python - 如何将所有给定的变量转换为 float

javascript - HighCharts x 轴上显示数据向前偏移 4 小时

Java - 当 "this"是唯一的出路时?