public static long ff(int n){
long f=1;
if(n<0)
System.out.println("n<0,input error");
else if(n==0||n==1)
f=1; //为什么f=1,就不再继续递归调用?
else
f=ff(n-1)*n;//这一步到底是怎么工作的?
return(f);
}
System.out.println(ff(3));//输出6
运算分析:
一层执行到f=ff(3-1)*3;停止,执行二层ff(3-1),也就是ff(2)
二层执行到f=ff(2-1)*2;停止,执行三层ff(2-1),也就是f(1)
三层执行到else if(n==0||n==1) f=1;然后返回1,二层继续执行。
二层执行f=1*2; 然后就返回2,一层继续执行
一层执行f=2*3; 返回6。