C 这个带有两个递归调用的return语句是如何工作的?
我试图理解C语言中的二项式系数递归代码C 这个带有两个递归调用的return语句是如何工作的?,c,recursion,C,Recursion,我试图理解C语言中的二项式系数递归代码 int binomial(int n, int m){ if(m == n){ return 1; } else if (m == 0){ return 1; } else if (m>n){ return 0; } else{ return binomial(n-1,m-1) + binomial(n-1,m); } }
int binomial(int n, int m){
if(m == n){
return 1;
}
else if (m == 0){
return 1;
}
else if (m>n){
return 0;
}
else{
return binomial(n-1,m-1) + binomial(n-1,m);
}
}
除了最后一行返回二项式(n-1,m-1)+二项式(n-1,m);,我什么都懂;。如果有人能解释发生了什么,我将不胜感激。我知道,真正理解代码在做什么有助于提高您的编码能力,这就是我想知道的原因。以下是二项式系数的常见定义:
关于这一点,可以在维基百科的“二项式系数”下找到一个像样的解释。(). 这里有一个方程的链接:如果你直接用二项式级数展开,它是什么样子的?是的,有点像。看看帕斯卡三角形,你可以看到在一个结构中的二项式系数,每个系数都是上面两个系数的和
n
是行,m
是“列”(如果每行的最左边是列0)。通过一点代数,您可以证明该语句是正确的;也就是说,二项式(n,m)=二项式(n-1,m)+二项式(n-1,m-1)(当m>0且n>=m时)。这行代码使函数递归到n=m=0。