题目是这样的:
public static void main(String[] args) {
a(16754);
}
public static void a(int n){
if(n>=10){
a(n/10);
System.out.println("结果:"+n/10);
}
b(n%10);
}
public static void b(int n){
System.out.println("n的值:"+n);
System.out.println(n);
}
控制台会输出什么?
输出的结果为:
n的值:1
1
结果:1
n的值:6
6
结果:16
n的值:7
7
结果:167
n的值:5
5
结果:1675
n的值4
4
来看一下程序的执行:
main方法启动后,第一次程序会进入if判断,接下来执行是这样的:
a(16754) ------ a(1675) ------ a(167) ------ a(16) ------ a(1)
当执行到a(1)的时候进入不了if判断,程序向下执行b(1%10),开始执行b方法,这个时候控制台输出:
n的值:1
1
这个时候程序并没有执行完,其相当于上面执行链中的a(16)方法刚刚执行完,接下来开始执行:
System.out.println("结果:"+n/10);
//这句执行完接着执行
b(n%10);
接着控制台输出:
结果:1
n的值:6
6
这个时候是a(167)刚刚执行完,接下重复上面的打印和b方法,控制台输出:
结果:16
n的值:7
7
这样一步步执行下去,直到程序完全结束,最终控制台输出结果如开始所示。