双递归 - Java

Ram*_*imi 1 java recursion

我有一个问题.当我得到这段代码时,我无法理解如何思考:

public class MysteryClass {
   public static void mystery(int n) {
      if (n > 0){
         mystery(n-1);
         System.out.print(n * 4);
         mystery(n-1);
      }
   }

   public static void main(String[] args) {
      MysteryClass.mystery(3);
   }
}
Run Code Online (Sandbox Code Playgroud)

答案是4 8 4 12 4 8 4但我不知道他们是怎么得到的......有人可以解释一下吗?

bga*_*ath 7

这就是函数调用的方式.要了解更多信息,请拿一支铅笔和一张纸,然后了解会发生什么.首先,为神秘而做(1).然后继续神秘(2)和神秘(3)

mystery(3)
    msytery(2)
        mystery(1)
            mystery(0)
            prints 1 * 4
            mystery(0)
        prints 2 * 4
        mystery(1)
            mystery(0)
            prints 1 * 4
            mystery(0)
    prints 3 * 4
    msytery(2)
        mystery(1)
            mystery(0)
            prints 1 * 4
            mystery(0)
        prints 2 * 4
        mystery(1)
            mystery(0)
            prints 1 * 4
            mystery(0)
Run Code Online (Sandbox Code Playgroud)