有大lao知道这个程序的具体功能吗

有大lao知道这个程序的具体功能吗?求解


#include 
double factorial(int n) {
    int i;
    double mul;
    mul = 1;
    for(i = 1; i <= n; ++i)
            mul *= i;
    return mul;
}
int combinations(int n, int k) {
    return factorial(n) / (factorial(k) * factorial(n - k));
}
int main(void) {
    int n, k;
    printf("输入总的元素个数: ");
    scanf("%d", &n);
    printf("输入要取出的元素个数: ");
    scanf("%d", &k);
    printf("C(%d,%d)=%d\n", n, k, combinations(n, k));
    return 0;
}

算排列组合的

//算排列组合 C 5 上面 3 下面结果为 10 
#include<stdio.h> 
double factorial(int n) {//相当于求 n 的阶层 
    int i;
    double mul;
    mul = 1;
    for(i = 1; i <= n; ++i)
            mul *= i;
    return mul;
}
int combinations(int n, int k) {// n 的阶层除以(k 的阶层 + n-k 的阶层)  
    return factorial(n) / (factorial(k) * factorial(n - k));
}
int main(void) {
    int n, k;
    printf("输入总的元素个数: ");
    scanf("%d", &n);
    printf("输入要取出的元素个数: ");
    scanf("%d", &k);
    printf("C(%d,%d)=%d\n", n, k, combinations(n, k));
    return 0;
}

排列与组合Cnm

不就是n的阶乘除以k的阶乘与(n-k)的阶乘吗?

计算在n个不同的球中取出k个球,问有多少种的取法。