C语言求组合数

这是一个使用C语言函数的示例:计算组合数 C(m,n) 的值(m≤10)。

组合数 C(m,n) 可以理解为从 m 个数中任意取出 n 个数的所有情况数。在数学中,求组合数 C(m,n) 的值可以借助 m 和 n 的阶乘来计算,计算公式为:

C(m,n)计算公式

从上面的计算公式可以看出,求组合数 C(m,n) 的值,需要进行三次阶乘运算。为了简化程序,可以把阶乘运算设计为函数 fac(x),求组合数时调用该函数即可。

代码清单 1:计算组合数 C(m,n) 的值(m≤10)
#include <stdio.h>
#include <stdlib.h>
long int fac(int x)           //定义阶乘函数
{
    int i;
    long int s = 1;
    for(i=1;i<=x;i++)
        s *= i;
    return s;
}
int main( )                    //主函数
{
    int m, n;
    printf("输入m和n(m≤10,n≤m):\n");
    scanf("%d %d",&m, &n);
    printf("C(m,n)=%ld\n",fac(m)/(fac(m-n)*fac(n)));
    system("pause");
    return 0;
}

运行结果为:

输入m和n(m≤10,n≤m):
11 5
C(m,n)=462