#include<stdio.h>
long fac(int n);
int main()
{
int n;
printf("please input a number \n");
scanf("%d",&n);
if(n<0)
{
printf("Date error,please input again\n");
}
else
{
printf("%d!=%d\n",n,fac(n));
}
return 0;
}
long fac(int n)
{
int i;
if(n==0 || n==1)
{
i=1;
}
else
{
i=n*fac(n-1);
}
return i;
}
分析:由于n! = n×(n-1)!,所以要计算n!, 就必须先计算(n-1)!, 要计算(n-1)!,必须先计算
(n-2)!,依此类推。要求2!,必须先知道1!,而1!是1,0!也是1。以上关系可用如下式子表示:
法二:for循环计算
#include<stdio.h>
int main()
{
int i,n,fac=1;
printf("please input a number:\n");
scanf("%d",&n);
for(i=1;i<=n;i++)
{
fac=fac*i;
}
printf("fac is %d\n",fac);
return 0;
}