递归代码中的混淆

Key*_*hah 2 java recursion

我正在学习Java,并且在一个递归示例中使用了以下代码,我不知道为什么print语句开始从1而不是10开始打印j?

class Test { 
   void printtest(int j)  {
      if(j==0) 
         return;
      else 
         printtest(j-1); 
      System.out.println(j);
   } 
} 
public class RecursionTest { 
   public static void main(String args[])  {
      Test t = new Test();
      t.printtest(10); 
   }
} 
Run Code Online (Sandbox Code Playgroud)

输出:

1
2
3 
4 
......10
Run Code Online (Sandbox Code Playgroud)

Era*_*ran 5

printtest(10)只有在调用return之后才会打印10,只有在调用printtest(9)return之后才打印9 printtest(8),依此类推......

printtest(0)返回时打印第一个输出,然后打印1,然后printtest(1)返回,打印2,依此类推......