C++一个递归调用问题
n是10intfun(intn){intz;if(n>1)z=fun(n-1)*n;elsez=1;returnz;}z=fun(n-1)*n;这个代码怎么理解?还有怎么...
n是10
int fun(int n)
{
int z;
if(n>1)
z=fun(n-1)*n;
else
z=1;
return z;
}
z=fun(n-1)*n;这个代码怎么理解?还有怎么调用的? 展开
int fun(int n)
{
int z;
if(n>1)
z=fun(n-1)*n;
else
z=1;
return z;
}
z=fun(n-1)*n;这个代码怎么理解?还有怎么调用的? 展开
3个回答
展开全部
先算出z=fun(9)*10,再一次调用fun函数即fun(9),执行到z=fun(8)*9,再一次调用fun函数即fu(8),以此类推,知道执行到递归出口即n==1时,z=1,即fun(1)=1.此时值一层层向上传递,由上算出fun(2)=fun(1)*2=2; fun(3)=fun(2)*3=6; fun(4)=fun(3)*4=24;以此类推可得fun(10)=fun(9)*10=3628800;
追问
第一次是fun(9)*10 等于90那这个存哪里是不是此时的fun(9)=90呀??然后又返回到了int fun(int n)在然后就是fun(8)*9
??
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询