#include <cstdio>
int factrial(int a)
{
int i=0;
if(a==0) return i;
if(a-1>=0) i=factrial(a-1)*a;
return i;
}
int main()
{
int x,y;
scanf("%d",&x);
y=factrial(x);
printf("%d",y);
return 0;
}
代码如上,输出结果一直为0,求解惑
if(a==1) return 1;
你不能递归到0啊,0乘以任何数都为0,所以你的结果永远是0
factrial(a-1)一直递归到底就是0.
代码如下:
#include <stdio.h>
int factrial(int n)
{
if(n==1 || n==0)
return 1;
else
return n * factrial(n-1);
}
int main()
{
int x,y;
scanf("%d",&x);
y = factrial(x);
printf("%d",y);
return 0;
}