【发布时间】:2017-09-27 11:44:43
【问题描述】:
说明:编写一个程序,让用户输入 N 并输出 N! (意思是 N*(N-1)(N-2)...*2*1)。提示:将变量 totalValue 初始化为 N,并使用从 N-1 倒数到 1 的循环变量 i。
根据我对 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。你有什么困惑? -
递减的时候,如果我错了,请纠正我,也就是说,i = i -1?所以这就是说在我的代码中它是 1!因为 userInt = userInt - 1 是 120?现在为什么它是 1 是有道理的!是120。起初我很困惑,因为我以为是5! = 5*4*3*2*1 = 120,我假设输出应该显示为 5!是 120
-
完全正确。
-
你可以用
for代替while
标签: java while-loop factorial