java问题,求高手详细解释一下,下面这个程序的输出结果是如何得到的?(重点分析一下这个程序的执行过程)

public class Count {
/**
* @param args
*/
static void count(int n)
{
if(n<10) count(n+1);
System.out.print(" "+n);
}
public static void main(String[] args) {
// TODO 自动生成方法存根
count(1);
System.out.println();
}
}
输出结果为 10 9 8 7 6 5 4 3 2 1

首先执行main方法,main方法是程序的入口,在main方法中逐条执行语句或方法,
首先执行的是count(1),因为count(int n)是static修饰的,所以可以在static修饰的main方法中直接调用,
再执行if语句块,知道判断的条件满足后结束if()语句块,
在count()方法的参数传的是1,所以1即n小于10,执行方法的递归调用n+1;打印n;依次判断。
当if条件n>10时,就会结束方法
温馨提示:内容为网友见解,仅供参考
第1个回答  2012-07-10
你把程序展开看看,我简写下:
main() {
count(1) {
if(1<10) count(2) {
if(2<10) count(3) {
if(3<10) count(4) {
...
}
print(" " + 3)
}
print(" " + 2)
}
print(" " + 1)
}
println()
}
然后程序从上到下执行
第2个回答  2012-07-11
这是递归,也就是说
static void count(int n) 《====

{ | |
if(n<10) count(n+1); =======
System.out.print(" "+n);
}
在没有执行System.out.print(" "+n);的时候又进行了count(n+1);一次接一次的执行
只要n>10了才开始执行第一次的System.out.print(" "+n);,然后一次次的返回
看看递归就OK了
第3个回答  2012-07-10
这是递归调用,调用时是count(1)count(2)……以此类推,但输出时是递推方式(即10、9、8、7……),所以是这结果。建议去看看递归。
相似回答