首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Java相关 >

递归的施行顺序

2012-07-29 
递归的执行顺序!public class Demo{public static void main(String[] arg){System.out.println(p(5))}pu

递归的执行顺序!
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);
  }
}

执行过程!顺序!!!




[解决办法]
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

热点排行