迭代地计算Pascal三角形中的项

时间:2016-11-03 12:56:01

标签: java pascals-triangle binomial-coefficients

我有以下方法需要迭代实现:

public int binom(int n, int k) {
        if (k < 0 || k > n) {
            return 0;
        }

        if (k == 0 || k == n) {
            return 1;
        }

        return binom(n - 1, k - 1) + binom(n - 1, k);
    }

唯一的条件是我必须使用身份:

binom(n, k) = binom(n - 1, k - 1) + binom(n - 1, k)

我最终得到了以下内容:

public int binom(int n, int k) {

    if (k < 0 || k > n) {
        return 0;
    }

    if (k == 0 || k == n) {
        return 1;
    }

    int[] previousRow = {1, 1};

    for (int i = 2; i < n; i++) {
        int[] currentRow = new int[i+1];
        for (int j = 0; j <= i; j++) {
            if (j == 0 || j == i) {
                currentRow[j] = 1;
                continue;
            }

            currentRow[j] = previousRow[j-1] + previousRow[j];
        }
        previousRow = currentRow;
    }

    return previousRow[k - 1] + previousRow[k];
}

是否有一种更简单/更明显的方法可以实现这一目标,我错过了?

0 个答案:

没有答案