在C语言递归函数中:

来源:百度知道 编辑:UC知道 时间:2024/07/03 02:25:45
int fac(intx);
int y;
if(x==0||x=1)
y=1;
else y=n*fac(n-1);
return y;
运算过程是什么

程序错误多处
int fac(intx)
{ int y;
if(x==0||x=1)
y =1;
else y=n*fac(n-1);
return y;
}
大哥请问n 是什么啊? if (x==0||x=1)有这一说???!!!
int fac(intx)
{ int y;
if(x==0||x==1)
y=1;
else y=x*fac(x-1);
return y;
}
求X!,例如x=4;运算过程
x=4!=(1||0) y=4*fac(3)
X=3!=(1||0) y=4*3*fac(2) 3*fac(2) 即为上步的fac(3)
x=2!=(1||0) y=4*3*2*fac(1) 2*fac(1) 即为上步的fac(2)
x=1 y=4*3*2*1

运算结果是x!
也就是x的阶乘

举个例子:求fac(4)
要求fac(n) 得先知道或者求出fac(n-1)
1.fac(4) = 4*fac(3)
2.fac(3)= 3*fac(2)
3.fac(2) = 2*fac(1)
4.fac(1) = 1;
开始返回替代
5.fac(2) = 2*1 =2;
6.fac(3) = 3*2 =6;
7.fac(4) = 4*6 =24

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

这个才是正确的