java递归问题

本人刚学JAVA,没有任何编程基础,各位高手见笑。publicclassCount{staticvoidcount(intn)//递归方法{if(n<5)count(n+... 本人刚学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程序设计实用教程,上面指明这用到了递归方法,只不过这是无返回值的递归方法。 谢谢。
展开
 我来答
sunnaiti
2007-10-13 · TA获得超过157个赞
知道小有建树答主
回答量:78
采纳率:0%
帮助的人:0
展开全部
先执行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);
嘟爷他巴
2007-10-13 · TA获得超过267个赞
知道小有建树答主
回答量:119
采纳率:0%
帮助的人:176万
展开全部
你的这个类执行顺序是:

(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);
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
fendouing
2007-10-13 · 超过19用户采纳过TA的回答
知道答主
回答量:65
采纳率:0%
帮助的人:66.3万
展开全部
我不打算回答你的问题..应为你这方法不能叫做递归..而且从你代码来看 给你解释应该是件很困难的事.我初学JAVA也这样. 建议多看看<入门经典>
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式