Java 求迭代形式二项式系数的代码

Java 求迭代形式二项式系数的代码,java,recursion,iteration,binomial-coefficients,Java,Recursion,Iteration,Binomial Coefficients,我已经编写了以递归形式查找二项式系数的代码: public int binom(int n, int k) { if (k==n || k==0) return 1; else return binom(n-1,k-1) + binom(n-1, k); } 如何以迭代形式而不是递归形式重写此代码?public int-binom(int-n,int-k) public int binom(int n, int k) { int C[][

我已经编写了以递归形式查找二项式系数的代码:

public int binom(int n, int k)
{
    if (k==n || k==0)
        return 1;
    else return binom(n-1,k-1) + binom(n-1, k);
}
如何以迭代形式而不是递归形式重写此代码?

public int-binom(int-n,int-k)
public int binom(int n, int k)
    {
        int C[][] = new int[n+1][k+1];
        int i, j;
        int min;

        // Caculate value of Binomial Coefficient in bottom up manner
        for (i = 0; i <= n; i++)
        {
            min = (i<k)? i: k;

            for (j = 0; j <= min; j++)
            {
                // Base Cases
                if (j == 0 || j == i)
                    C[i][j] = 1;

                    // Calculate value using previosly stored values
                else
                    C[i][j] = C[i-1][j-1] + C[i-1][j];
            }
        }

        return C[n][k];
    }
{ 整数C[][]=新整数[n+1][k+1]; int i,j; int-min; //自下而上计算二项式系数的值 对于(i=0;i而不是将整个Pascal三角形构建到第n行(内存使用量随n的平方增长),我们可以只关注行本身,并使用恒定内存

让我们找出帕斯卡三角形上同一行上连续项之间的关系:

因此,我们可以从nC0=1迭代生成术语:

publicstaticintbinom(intn,intk)
{
int值=1;
//这里需要小心-由于整数除法,不能只使用*=
for(int i=0;i
这很容易通过浏览器搜索找到。k!(n-k)!/n!但我想特别避免使用公式(n,k)=n!/k!(n-k)!。我想使用公式(n,k)=(n-1,k-1)+(n-1,k)取而代之。这可能吗?在这里检查我的理解:您想要递归公式的迭代实现。@nagendra547的链接为您提供了它。明白了。谢谢。我将回答我自己的问题。
public static int binom(int n, int k)
{
    int value = 1;
    // need to be careful here - can't just use *= due to integer division
    for (int i = 0; i < k; i++)
        value = (value * (n - i)) / (i + 1);
    return value;
}