C-阶乘实现
阶乘的定义:
递归实现
#include <stdio.h>
#include "stdarg.h"
unsigned int factorial(unsigned int n) {
if (n == 0) {
return 1;
} else {
return n * factorial(n - 1); //f(n) = nf(n-1);
}
}
int main(void) {
printf("3! :%d\n", factorial(3));
printf("5! :%d\n", factorial(5));
printf("10! :%d\n", factorial(10));
return 0;
}
循环实现
unsigned int factorial_by_iteraion(unsigned int n) {
if (n == 0) {
return 1;
}
unsigned int result = 1;
for (unsigned int i = n; i > 0; --i) {
result *= i;
}
return result;
}