【发布时间】:2021-06-26 13:58:01
【问题描述】:
public class Test1
{
public static void main (String[]args)
{
int number = 0;
for (int i = 0; i < 5; i++)
{
if (number != 0)
{
number = i * number;
}
else
{
number = i;
}
}
System.out.println (number);
}
}
我不太确定这个算法是如何工作的。我的思考过程是:
- 我们将
number默认设置为0。 - 在我们刚才所说的 for 循环中,继续计数
i,直到它不再小于 5。 - 我们说如果
number不为0,我们通过将number与i相乘来更新number。所以在我们的例子中,i是 0,1,2,3 和 4。 - 否则,我们说的数字是
i,而i就是我们计算的数字。 - 最后,我们打印
number。
我错过了什么吗?我是不是哪里错了?
如果我运行此代码,为什么会得到 24 作为输出?我无法理解这个简单的程序是如何工作的。
【问题讨论】:
-
你最终得到
4!。在循环中添加System.out.println(number);可能会有所帮助。 -
您的想法似乎是正确的。想象一下你是运行这段代码的计算机,想想你会输出什么?
-
关键是对于所有整数
x,0 *x等于 0,因此如果我们不将number初始化为0以外的其他值,答案将始终是0。这就是else分支(即if (number == 0))所做的。我个人会选择另一种方法(用1初始化number,从i = 1开始迭代,因为0! is 1)。 -
@Goof 如果您认为您的问题已得到解答,您可以将其中一个答案标记为已接受(投票选项附近的绿色勾号 ✔ 符号)。
-
糟糕的标题。重写以总结您的具体技术问题。
标签: java algorithm for-loop if-statement