【发布时间】:2016-02-19 04:47:03
【问题描述】:
对于以下方法,当调用神秘(45)时,输出为“1 0 1 1 0 : 2 5 11 22 45”。我明白为什么会打印出“1 0 1 1 0 :”,但不明白冒号后如何打印出“2 5 11 22 45”。谁可以给我解释一下这个?我试过把它写出来,但我就是想不通。
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 + " ");
}
}
【问题讨论】:
-
你试过通过它调试吗?这是您了解正在发生的事情的最明显方式。随时关注调用堆栈......如果有帮助,请添加更多日志记录。
-
尝试自己执行代码并将结果写在一张纸上,然后你就会解开这个谜。