【发布时间】:2016-03-09 16:45:47
【问题描述】:
请逐步解释递归;
public class TestClass {
private static void printit(int i) {
if (i == 1) {
return;
}
System.out.println(i);
printit(i / 2);
printit(i / 2);
}
public static void main(String args[]) {
int i = 8;
printit(i);
}
}
【问题讨论】:
-
你不明白什么?
-
为什么以及如何输出是 8 4 2 2 4 2 2
-
如果你传入8,那不是1,对吧?所以该方法不会立即返回。然后它打印 8,并在 8 / 2 上调用自己,即 4。现在,如果你传入 4,那不是 1,对吗? ... 等等。拿出铅笔和纸,准确地写下每一步在做什么;它可以帮助您在每次调用方法时缩进,并在返回时取消缩进。我知道这听起来很乏味,但这是学习和内化这些东西的最佳方式。而且这些东西很关键,所以时间花得值。
-
@DeepakKataria 通常与
please do this、please do that的问题会很不受欢迎。像this is what I tried, can someone explain to me what went wrong?这样的问题会好很多。