/*************************************************************************
用函数递归求阶乘
输入的数字最好小于15,否则可能溢出
************************************************************************/
#include<stdio.h>
long fact(long n);
int main()
{
int a;
long b;
printf("请输入一个数字:");
scanf("%d",&a);
b = fact(a);
printf("%d的阶乘是%ld
",a,b);
return 0;
}
long fact(long n){
long ans;
if(n>0){
ans = n * fact(n-1);
}else{
ans = 1;
}
return ans;
}
/*************************************************************************
用循环的方式计算阶乘
************************************************************************/
#include<stdio.h>
long fact(int a);
int main()
{
int a;
long b;
printf("请输入一个数:");
scanf("%d",&a);
b = fact(a);
printf("%d的阶乘是%ld
", a, b);
return 0;
}
long fact(int n){
long ans;
for( ans = 1;n > 1;n--){
ans *= n;
}
return ans;
}