递归的执行顺序!

Yang_Hai_Quan 2012-04-16 11:00:15
public class Demo{
public static void main(String[] arg){
System.out.println(p(5));
}
public static int p(int a){
if(a==1)
return 1;
else
return a*p(a-1);
}
}

执行过程!顺序!!!


...全文
159 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
qybao 2012-04-16
  • 打赏
  • 举报
回复
public static int p(int a){
if(a==1)
return 1;
else
return a*p(a-1);
}

p(5)的时候 5!=1,所以执行 return 5*p(4),继续递归调用p(4) --A
p(4)的时候 4!=1,所以执行 return 4*(p3),继续递归调用p(3) --B
p(3)的时候 3!=1,所以执行 return 3*p(2),继续递归调用p(2) --C
p(2)的时候 2!=1,所以执行 return 2*(p1),继续递归调用p(1) --D
p(1)的时候 1==1,所以执行 return 1,p(1)执行结束,回到D,return 2*1,即return 2,然后p(2)执行结束,回到C,变成return 3*2,即return 6,然后p(3)执行结束,回到B,return 4*6,即return 24,然后p(4)执行结束,回到A,return 5*24,即return 120,然后p(5)结束,返回120,所以main方法打印120
绝世酱油瓶 2012-04-16
  • 打赏
  • 举报
回复
你这不是递归啊、你都return了、还递归个什么劲
xiaofanac66 2012-04-16
  • 打赏
  • 举报
回复
我感觉楼上的理解也差不多。

51,409

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧