二项系数

时间:2010-11-11 19:29:01

标签: algorithm calculator binomial-coefficients

我一直在寻找一个简单的二项式系数算法,但无济于事。问题是我用于课堂的语言有点奇怪。很多都是使用Yacc和Lex。

无论如何我们在课堂上做了一个例子:

n=12; p=1; i=1;
while (i <= n) {
        p = p * i;
        print p;
        i = i + 1;
};

这是计算阶乘的一个例子,但现在我需要修改它以便能够计算C(n,k)或N选择K(又名二项式系数),但我不应该有多复杂我应该做到。我们可以选择任何N和K(用户不必输入它们),因此任何随机的2个数字都可以工作(例如上面的例子)。我很确定这段代码只支持基本函数,例如while循环和基本数学,所以我不认为使用阶乘是可能的......但我想我可以使用上面的代码吗?

有什么想法吗?

2 个答案:

答案 0 :(得分:2)

由于我假设这是作业,我不打算提供解决方案。我要说的是:

C(n,k)有一个公式,它依赖于除法,减法,乘法和阶乘:

n!/(k!(n-k)!)

您已经拥有可以计算阶乘的代码,看起来您使用的语言支持您需要的其他数学运算符。

所以你要做的就是计算三个因子:一个用于n,一个用于k,一个用于n-k

答案 1 :(得分:0)

如果您需要插件库来为您完成工作,您可以随时使用Boost库:http://www.boost.org/doc/libs/1_35_0/libs/math/doc/sf_and_dist/html/math_toolkit/special/factorials/sf_binomial.html