因此,我必须编写一个程序,打印出11个10阶二项式系数。我遇到了满足我需要的代码,但是我试图理解它为什么起作用。
#include<stdio.h>
int binomialCoeff(int n, int k)
{
if(k == 0)return 1;
if(n <= k) return 0;
return (n*binomialCoeff(n-1,k-1))/k;
}
int main()
{
int k;
for(k=10;k>=0;k-=1)
{
printf("%d\n", binomialCoeff(10, k));
}
我知道为什么int主体起作用了,我只是不知道如何进行二项式Coeff计算。我对所有这些编码东西都比较陌生,因此感谢您的帮助!
这实际上非常优雅。
该函数binomialCoeff
是具有2个基本条件的递归函数。如果是k == 0
,您只返回1
。如果n<=k
返回0。因此,如果非为true,则通过从n
和中减去1来调用相同的函数k
。这重复导致
n *(二项式Coeff(n-1,k-1))/ k
假设N为10,K为7
你得到
10*(binomialCoeff(9,6)/7)
为了简单binomialCoeff
起见,让第一次调用称为res1。这简化了事情:
10*(res1/6)
但res1
本身呼唤binomialCoeff
导致
9*(binomialCoeff(8,5)/6)
我们可以称之为 res2
所以我们得到
10*(res2/6)
依此类推,直到满足基本条件为止;导致一系列n
的相乘在一起。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句