Java 递归神秘方法——有人能给我解释一下吗?
对于以下方法,当调用神秘(45)时,输出为“1 0 1 1 0:2 5 11 22 45”。我明白为什么“10110:”会被打印出来,但不明白“251112255”是如何在冒号后面打印出来的。有人能给我解释一下吗?我试着把它写出来,但就是想不出来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 %
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);您是否尝试过调试它?这是最明显的方式,您将看到正在发生的事情。始终关注调用堆栈…如果有帮助,请添加更多日志记录。尝试执行代码并将结果写在一张纸上,然后您将解决谜团。您格式化代码的方式非常好。