源本科技 | 码上会

打印杨辉三角形

2026/02/08
16
0

题目

打印出杨辉三角形(要求打印出 10 行如下图)

 1
 1  1
 1  2  1
 1  3  3  1
 1  4  6  4  1
 1  5  10  10  5  1
 ...

说明

杨辉三角形(又称帕斯卡三角形)是一个经典的数学结构,具有以下性质:

  • 每行首尾元素均为 1

  • 中间每个元素等于其左上方正上方两个元素之和

  • nn 行(从第 0 行开始计数)对应二项式(a+b)n(a + b)^n 的展开系数

  • nn 行第kk 列的值为组合数:

C(n,k)=(nk)=n!k!(nk)!C(n, k) = \binom{n}{k} = \frac{n!}{k!(n-k)!}

👈点击左箭头查看答案(一定要在自己思考并实现后再看参考答案哦!)

程序实现

利用滚动数组思想,从右往左更新,可将空间复杂度从O(n2)O(n^2) 降至O(n)O(n)

public class YangHuiOptimized {
    public static void main(String[] args) {
        int n = 10;
        int[] row = new int[n];
        row[0] = 1;
        
        for (int i = 0; i < n; i++) {
            // 从右往左更新,避免覆盖未使用的旧值
            for (int j = i; j >= 1; j--) {
                row[j] = row[j] + row[j - 1];
            }
            // 打印当前行
            for (int j = 0; j <= i; j++) {
                System.out.printf("%4d", row[j]);
            }
            System.out.println();
        }
    }
}

补充知识

  • 历史:虽然以中国南宋数学家杨辉(1238–1298)命名,但此三角形最早由北宋贾宪(约 11 世纪)提出,故也称“贾宪三角”。在西方称为帕斯卡三角形(Blaise Pascal, 1653 年系统研究)。

  • 应用

    • 快速计算组合数(nk)\binom{n}{k}

    • 二项式展开系数

    • 概率分布(如二项分布)

    • 分形几何(如谢尔宾斯基三角形)

杨辉三角是连接代数、组合与几何的优美桥梁,也是编程入门必练的经典问题。