C-阶乘实现

阶乘的定义:

f(n)=nf(n1)

递归实现

#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;
}