/* Perform functional test of factorial function i */ static void ftest(int i) { int n; for (n = 0; n < 10; n++) { if (funs[i](n) != rfact(n)) { printf("Oops. %d! yields %d, should be %d\n", n, funs[i](n), rfact(n)); break; } } }
int main (void) { int num; printf("This program calculates factorials.\n"); printf("Enter a value in the range 0-12 (q to quit):\n"); while (scanf("%d", &num) == 1) { if (num < 0) { printf("No negative numbers, please.\n"); } else if (num > 12) { printf("Keep input under 13.\n"); } else { printf("loop: %d factorial = %ld\n", num, fact(num)); printf("recursion: %d factorial = %ld\n", num, rfact(num)); } printf("Enter a value in the range 0-12 (q to quit):\n"); } printf("Bye.\n"); return 0; }
int rfact(int n) { int result; if (n <= 1) result = 1; else result = n * rfact(n-1); return result; }
long rfact(int n) // 使用递归的函数 { long ans; if (n > 0) ans = n*rfact(n-1); else ans = 1; return ans; }
long rfact(int n) { long ans; if (n > 0) { ans= n * rfact(n-1); } else { ans = 1; } return ans; }
long rfact(int para)//使用递归计算阶乘 { long ans; if(para > 0) ans = para * rfact(para - 1); else ans = 1; return ans; }
long rfact(int n) // recursive function { long ans; if (n > 0) ans = n * rfact(n - 1); else ans = 1; return ans; }
long rfact (int n) { /* función recursiva */ long ans; if (n > 0) ans = n * rfact (n - 1); else ans = 1; return ans; }
int main (void) { int num; long rfact (int n); while (scanf ("%d", &num) == 1) { if (num < 0) printf ("Me horrorizan los números negativos.\n"); else if (num > 15) printf ("Sólo puedo llegar hasta 15.\n"); else printf ("%d factorial = %ld\n", num, rfact (num)); } return 0; }
int rfact(int n) { if (n <= 1) return 1; return n * rfact(n-1); }