java递归问题

本人刚学JAVA,没有任何编程基础,各位高手见笑。
public class Count
{
static void count(int n) //递归方法
{
if (n<5)
count(n+1);
System.out.print(" "+n);
}
public static void main(String args[])
{
count(1);
System.out.println();
}
}
请详细讲解这段程序是怎么执行的,我的理解是先执行main函数里的count(1),然后进入count方法,N值为1,所以执行IF语句,直到count(5),此时退出if 循环,打印N=5 ,然后应该没有要执行的东西了,可是答案是5 4 3 2 1 ,请问这是怎么回事,谢谢!
fendouing,我这段代码是从教材上抄过来的,java2程序设计实用教程,上面指明这用到了递归方法,只不过这是无返回值的递归方法。 谢谢。

先执行count(1),然后进入count方法,N值为1,所以执行IF语句,也就是执行count(2),然后进入count方法,N值为2,所以执行IF语句,也就是执行count(3),然后进入count方法,N值为3,所以执行IF语句,也就是执行count(4),然后进入count方法,N值为4,所以执行IF语句,也就是执行count(5),然后进入count方法,N值为5,所以不执行IF语句,然后执行System.out.print(" "+n); 也就是输出5,然后本次参数为5的count方法调用结束了,返回到调用它的参数为4的count方法中,然后执行System.out.print(" "+n);输出4,然后一直这样下去,输出3,2,1 。这里需要说明的是在执行count(5)的时候,count(4)、count(3)、count(2)、count(1)都没有执行完毕,他们都在等自己方法体中的count(n+1)执行完毕,然后再执行System.out.print(" "+n);
温馨提示:答案为网友推荐,仅供参考
第1个回答  2007-10-13
你的这个类执行顺序是:

(1) count(5 + 1) 不会再递归 因为 5并不大于5
System.out.println(5); 先执行这个
(2) count(4 + 1) 继续回到这里执行
System.out.println(4);
(3) 同理……………………
直到第一次执行递归的地方。
(5) count(1 + 1)
System.out.println(1);
第2个回答  2007-10-13
我不打算回答你的问题..应为你这方法不能叫做递归..而且从你代码来看 给你解释应该是件很困难的事.我初学JAVA也这样. 建议多看看<入门经典>
相似回答