//用函数的方法(递归)求出n!
//用函数的方法(递归)求出n!
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
int Fac1 (int);
int Fac2 (int);
int Fac3 (int);
int main()
{
int n;
int ret1,ret2,ret3;
scanf("%d", &n);
//求阶乘的方法一(普通):
ret1 = Fac1 (n);
//求阶乘的方法二(优化):
ret2 = Fac2 (n);
//求阶乘的方法三(递归):
ret3 = Fac3 (n);
printf("%d\n", ret1);
printf("%d\n", ret2);
printf("%d\n", ret3);
return 0;
}
int Fac1(int n)
{
int j;
int result = 1;
for (j = 1; j <= n; j++)
{
result = result * j;
}
return result;
}
int Fac2(int n)
{
int result = 1;
for (; n >=1; n--)
{
result = result *n;
}
return result;
}
int Fac3(int n)
{
if (n > 1)
{
return n*Fac3(n-1);
}
else
{
return 1;
}
}