欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Java 帕斯卡三角/杨辉三角

程序员文章站 2024-03-15 16:15:12
...

帕斯卡三角在国内教科书中成为杨辉三角,他们形如下图:
Java 帕斯卡三角/杨辉三角
观察其规律,可以看到每一层的其实和结束都是1,层数和元素个数相同。在当层数大于2层,非起始元素的值计算公式为:data[i][j] =data[i-1][j-1] + data[i-1][j]
分析到这里,解决方法已经出来了,我们使用递推公式,对每一层的元素进行处理,下面给出对应的实现:

1. 使用递推公式求解杨辉三角

    public List<List<Integer>> testPascal(int numRows) {
        List<List<Integer>> rst = new ArrayList<>();
        if (numRows < 0){
            return null;
        }
        for (int i = 0; i < numRows; ++i) {
            List<Integer> current = new ArrayList<>();
            //开始元素为1
            current.add(1);
            //当层数大于2层的时候,使用迭代公式
            if (i > 1) {
                for (int j = 1; j < i; ++j) {
                    List<Integer> tmp = rst.get(i - 1);
                    current.add(tmp.get(j - 1) + tmp.get(j));
                }
            }
            if (i > 0) {
                current.add(1);
            }
            rst.add(current);
        }
        return rst;
    }

2. 使用数学变换求解杨辉三角

在*上可以看到,杨辉三角其实可以通过数学变换,其与二项式展开形式一致。具体可以去*上看,实现可以参考这篇博客:
https://www.cnblogs.com/JumperMan/p/6759422.html