#include<stdio.h>
long fac(unsigned n)
{
if (n == 0 || n == 1)
{
return 1;
}
else
{
return (n * fac(n - 1));
}
}
int main()
{
unsigned ui;
printf("输入计算的阶乘:");
scanf("%u", &ui);
printf("%u的阶乘为:%u\n", ui, fac(ui));
return 0;
}
注意:
0的阶乘是1,不是0,因为阶乘表示的是全排列,是从n个中取出n个的所有的取法总数。所以当n==0或者n==1时返回1。
![](https://video.ask-data.xyz/img.php?b=https://iknow-pic.cdn.bcebos.com/42a98226cffc1e17e19d3f4c5a90f603738de9a9?x-bce-process=image%2Fresize%2Cm_lfit%2Cw_600%2Ch_800%2Climit_1%2Fquality%2Cq_85%2Fformat%2Cf_auto)