我一直在寻找一个简单的二项式系数算法,但没有成功问题是我在课堂上使用的语言有点…很奇怪。很多是使用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循环和基本数学,所以我不认为使用阶乘是可能的……但我想我可以这样使用上面的代码吗?
有什么想法吗?
最佳答案
既然我假设这是家庭作业,我就不会提供解决方案我要说的是:
c(n,k)有一个依赖于除法、减法、乘法和阶乘的公式:
n!/(k!(n-k)!)
您已经有了可以计算阶乘的代码,而且您使用的语言似乎支持您需要的其他数学运算符。
所以你只需要计算三个因子:一个用于
n
,一个用于k
和一个用于n-k
。关于algorithm - 二项式系数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4158446/