Java 递归神秘方法——有人能给我解释一下吗?

Java 递归神秘方法——有人能给我解释一下吗?,java,recursion,Java,Recursion,对于以下方法,当调用神秘(45)时,输出为“1 0 1 1 0:2 5 11 22 45”。我明白为什么“10110:”会被打印出来,但不明白“251112255”是如何在冒号后面打印出来的。有人能给我解释一下吗?我试着把它写出来,但就是想不出来 public static void mystery (int n) { if (n <= 1) { System.out.print(": ");} else { System.out.print((n %

对于以下方法,当调用神秘(45)时,输出为“1 0 1 1 0:2 5 11 22 45”。我明白为什么“10110:”会被打印出来,但不明白“251112255”是如何在冒号后面打印出来的。有人能给我解释一下吗?我试着把它写出来,但就是想不出来

public static void mystery (int n) {
   if (n <= 1) {
       System.out.print(": ");}
   else {
      System.out.print((n % 2) + " ");
      mystery (n/2);
      System.out.print(n + " ");
   }
}
公共静态无效神秘(int n){

如果(n它是递归的,那么调用看起来像这样

System.out.print((45 % 2) + " ");
    System.out.print((22 % 2) + " ");
        System.out.print((11 % 2) + " ");
            System.out.print((5 % 2) + " ");
                System.out.print((2 % 2) + " ");
                    mystery (2 / 2); <-- won't recurse anymore, will just print :
                System.out.print(2 + " ");
            System.out.print(5 + " ");
        System.out.print(11 + " ");
    System.out.print(22 + " ");
System.out.print(45 + " ");
System.out.print((45%2)+”);
系统输出打印((22%2)+”);
系统输出打印((11%2)+”);
系统输出打印((5%2)+”);
系统输出打印((2%2)+”);

神秘(2/2);您是否尝试过调试它?这是最明显的方式,您将看到正在发生的事情。始终关注调用堆栈…如果有帮助,请添加更多日志记录。尝试执行代码并将结果写在一张纸上,然后您将解决谜团。您格式化代码的方式非常好。