说明:编写一个程序,让用户输入 N 并输出 N! (意思是 N*(N-1)(N-2)...*2*1)。提示:将变量totalValue初始化为N,并使用循环变量i从N-1向下计数到1。
根据我对Java阶乘的理解,5! = 5*4*3*2*1 = 120。 因此,当我在本练习中计算 Java 阶乘时,我输入 5 作为用户输入,以测试我是否能够正确计算 Java 阶乘。但输出却是1!是 120。这是我的代码的一部分,仅供引用:
userInt = scnr.nextInt();
// FIXME: Ask user to input an integer, store in userInt
totalVal = userInt;
while (userInt > 1) {
userInt = userInt - 1;
totalVal = userInt * totalVal;
} // FIXME: Add while loop that counts down to 1, updating totalVal
System.out.println(userInt + "! is " + totalVal);
} //After typing 5 and clicking Run, it shows 1! is 120
根据我对评论的理解//FIXME:要求用户输入一个整数,存储在userInt中//,我输入“5”作为尝试计算阶乘的测试。那么当用户输入 5 时,为什么结果不是 5!是120?怎么不是5啊!是120吗?
能否从我的代码中解释为什么它是 1!是 120 而不是 5!是120?或者说为什么应该是5!是我一直假设的120吗? 预先感谢您,我正在努力解决这个问题。
最佳答案
您正在递减 userInt
直到达到 1。您可以通过添加和使用持有者整数变量来解决此问题。
userInt = scnr.nextInt();
int holder = userInt;
totalVal = userInt;
while (userInt > 1) {
userInt = userInt - 1;
totalVal = userInt * totalVal;
} // FIXME: Add while loop that counts down to 1, updating totalVal
System.out.println(holder + "! is " + totalVal);
} //After typing 5 and clicking Run, it shows 1! is 120
关于java - 5!是 120,但输出为 1!是120?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46439093/