Java 在下面的函数中,为什么在显示Hello(6,5,….1)之后,空格在计数器中显示增量?

Java 在下面的函数中,为什么在显示Hello(6,5,….1)之后,空格在计数器中显示增量?,java,recursion,Java,Recursion,在下面的函数中,为什么在显示Hello(6,5,….1)之后,空格在计数器中显示增量 private void myMethod(int counter) { if (counter == 0) { System.out.println(""); } else { System.out.println("Hello" + counter); myMethod(--counter); Syste

在下面的函数中,为什么在显示Hello(6,5,….1)之后,空格在计数器中显示增量

private void myMethod(int counter)
{
    if (counter == 0)
    {
        System.out.println("");
    }
    else
    {
        System.out.println("Hello" + counter);
        myMethod(--counter);
        System.out.println("" + counter);
    }
}
将6传递给方法时的程序输出:

Hello6
Hello5
Hello4
Hello3
Hello2
Hello1

0
1
2
3
4
5

如果递归完全完成,则首先调用第二个print,这意味着它向后计数,因为最后调用的方法首先完成

如果这就是你的意思。

(实际上不是代码,而是用于图表) 使用myMethod(3)时:


因为每个语句都有三条语句,并且它们是按从上到下的顺序执行的,所以首先执行第一条print语句,然后执行递归,这会临时跳过第二条print语句,直到到达base语句0为止,然后它会向后执行,为每个语句执行第二条print语句。(如果这是您要问的)

您所说的“那么空格在计数器中显示增量”到底是什么意思?这对我来说很不清楚。如果您能显示一个简短但完整的程序、实际输出和预期输出,这会有所帮助。当计数器=5输出Hello5 Hello4 Hello3 Hello2 Hello1 0 1 2 3 4否时,这并不能解释您的意思。你需要尽可能地努力使自己变得清晰-看,OP不是很清楚,但我认为他的意思是在他的输出中有一个空行。如果问题是空行-你希望
System.out.println(“”
怎么办?
mM(3)->|prints: "Hello3"
       |mM(2)-------------->|prints: "Hello2"
       |prints:....         |mM(1)-------------->|prints: "Hello1"
                            |prints....          |mM(0)----------->|prints: ""
                                                 |prints....