这里给出递归和递推两种计算阶乘的程序。
#include <stdio.h> // 递归法计算阶乘 long factorial(int n) { if(n==0 || n==1) return 1; else return n * factorial(n-1); } // 递推法计算阶乘 long factorial2(int n) { long fact=1; int i; if(n==0 || n==1) return 1; else { for(i=2; i<=n; i++) fact *= i; return fact; } } int main(void) { printf("i=%d factorial=%ld ", 5, factorial(5)); printf("i=%d factorial=%ld ", 5, factorial2(5)); return 0; }
关键代码(正解):
// 递推法计算阶乘 long factorial(int n) { long fact=1; int i; if(n==0 || n==1) return 1; else { for(i=2; i<=n; i++) fact *= i; return fact; } }