日期:2014-05-20  浏览次数:20771 次

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