我不明白这段代码,为什么它会增加。如果我使用递归调用更改 print 语句中的顺序,这对我来说很有意义,但这就是它计数的原因。在书中,它说“System.out.println 发生在每个递归调用返回之前。因此,它是向上计数而不是向下计数。”我不明白它。感谢你的帮助。
public static void countdown(int n)
{
if (n == 0)
{
System.out.println("Blastoff!");
}
else
{
countdown(n - 1);
System.out.println(n);
}
}
最佳答案
因此,如果 n != 0,您的程序将在“else” block 中运行代码,其中又调用了 countdown(n-1) 方法。例如,如果您设置 n = 3,则只要 n > 0,此代码就会运行。因此,基本上运行方法 run 本身,如下所示:
countdown(3) 调用 countdown(2) 方法,然后 countdown(2) 调用 countdown(1)。只要 n 大于 0,就会发生这种情况。如果 n == 0,它将打印您的消息。
关于Java递归性的误解,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49491062/