在尝试求解使用递归方法查找二项式系数的赋值时,我想到了这一点:
public class Binomial
{
public static long binom(int n, int k)
{
if (k==n || k==0)
return 1;
else return binom(n-1,k-1) + binom(n-1, k);
}
对于
n=5; k=3
,该方法返回的值为10。对k和n使用一堆不同的值对其进行了尝试,它们都给出了预期的结果,因此代码有效,我只是不知道为什么以及如何执行。我非常感谢您提供一个愚蠢的解释。谢谢! 最佳答案
这是Pascal三角形,是二项式系数及其计算的可视化:
1
1 1
1 2 1
1 3 3 1
每个元素都是其上方两个元素的总和。
现在,如果您查看递归公式
binom(n, k) = binom(n-1,k-1) + binom(n-1, k)
,将n
作为行号,并将k
作为元素在行中的位置,您将发现上述规则完全以代数形式记录下来。您唯一需要的是边界情况,这些情况由if-else语句的“ then”子句覆盖。关于java - 了解查找二项式系数的递归方法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28326501/