C语言递归问题n!阶乘分析:

int fac(int n)
{ static int f=1;
f=f*n;
return f;
}?这个程序可以实现下面这个程序的功能,请问这个静态局部变量定义的f=1是怎么实现递归的,请高手指点下过程?

int fac(int n)
{
int f;
if(n==1||n==0)
f=1;
else
f=fac(n-1)*n;
return f;
}

计算fac(5)=fac(4)*5
fac(4)=fac(3)*4
fac(3)=fac(2)*3
fac(2)=fac(1)*2
而fac(1)=1
于是得到答案,逐步返回:
计算得到:
fac(2)=1*2=2
fac(3)=2*3=6
fac(4)=6*4=24
fac(5)=24*5=120
温馨提示:答案为网友推荐,仅供参考

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网