//用函数的方法(递归)求出n!
//用函数的方法(递归)求出n! #define _CRT_SECURE_NO_WARNINGS 1 #includeint 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("%dn", ret1); printf("%dn", ret2); printf("%dn", 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; } }



