在尝试求解使用递归方法查找二项式系数的赋值时,我想到了这一点:

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/

10-12 14:12