我写了一个输出类似" 01234567891010987654321"的程序。但问题是我没有理解为什么会这样。你能解释一下输出的最后一行吗。
我的代码是:
class Demo{
public static void main(String[] args) {
int i = 0;
show(i);
}
public static void show(int i) {
if(i<=9)
{
System.out.print(i++);
show(i);
}
System.out.print(i--);
}
}
答案 0 :(得分:1)
您可以将输出分为两部分: 第一部分:
012345678910
这部分是从你的if语句中打印出来的 - 它将从0到10递归运行,因为对于那些我是&lt; = 9。
第二部分:
10987654321
这个来自System.out.print(i--);
之后你的if语句 - 在第一部分中你递归到你的show方法,现在你正在递归它,从10到1(你不会得到0因为你的++)
如果您希望最后一行仅执行一次,请在else
段中执行此操作,这样您就无法在输入show method
答案 1 :(得分:1)
以图形方式,这种情况发生:
if (i <= 9) {
System.out.print(i++);
if (i <= 9) {
System.out.print(i++);
if (i <= 9) {
System.out.print(i++);
// etc, until i == 10
System.out.print(i--);
}
System.out.print(i--);
}
System.out.print(i--);
}
System.out.print(i--);
最后一行总是再次执行;想象一下,如果我从20开始 - 这个嵌套的被叫不会执行,但最后一行将执行一次。