非递归方法
double类型比int类型的范围大,能更大程度上避免溢出。
int main()
{
int n = 0;
printf("Enter a number: ");
scanf("%d", &n);
int i = 0;
double sum = 1.0;
for (i = 1; i <= n; i++)
{
sum *= i;
}
printf("sum = %.0f", sum);
return 0;
}
递归的方法
int fact(int n)
{
if (n == 1)
return 1;
else
return n * fact(n - 1);
}
int main()
{
int n = 0;
printf("Enter a number: ");
scanf("%d", &n);
double ret = fact(n);
printf("ret = %.0f", ret);
return 0;
}