一个正整数的阶乘是指从1到该数的所有整数的乘积,并且0的阶乘是1.我们可以利用递归来求阶乘
例如:利用递归来求5的阶乘。5! = 5 * 4! ,4! = 4 * 3!,3! = 3 * 2!, 2! = 2 * 1!,1!=1;
所以可总结出当n>1时可用n!=n * (n-1)!来计算,当n=1或n=0时n!为1,因此可以得出以下代码。
#include <stdio.h>
int fac(int n)
{
if(n==0||n==1)
{
return 1;
}
else
{
return n * fac(n-1);
}
}
int main()
{
int n;
scanf("%d",&n);
printf("%d!为:%d\n",n,fac(n));
return 0;
}
注:请注意上述代码中数据类型用了int类型,在计算较大的数的阶乘时结果会超出int类型的范围,出现溢出。在阶乘结果溢出的时候可以考虑使用数组来存储结果。