#include<stdio.h>
#include<string.h>
int fac(int n)
{
if ((n>=0)&&(n<= 1))
{
return 1;
}
else
{
return n * fac(n - 1);
}
}
void main()
{
int num;
printf("请输入一个数求它的阶乘:>");
scanf("%d",&num);
int ret = 0;
ret = fac(num);
printf("%d的阶乘为%d",num,ret);
}
用函数的方式实现
int fac(int n)
{
int i = 0;
int ret=1;
for (i = 1; i <= n; i++)
{
ret = ret * i;
}
return ret;
}
void main()
{
int num;
printf("请输入一个数求它的阶乘:>");
scanf("%d",&num);
int ret = 0;
ret = fac(num);
printf("%d的阶乘为%d",num,ret);
}
不是所有的情况都适合去递归,递归的时间有可能很长,效率没有循环那么高,建议大家还是采用自己适合的方式去选择。