Python 实现杨辉三角

杨辉三角,又称帕斯卡三角,是一种深受数学家青睐的数字排列。从简单的几何形状中,我们不仅能观察到数字间的关系,还能发现许多有趣的数学性质。本文将介绍杨辉三角的基本概念,并展示如何使用 Python 来实现和生成杨辉三角。

杨辉三角的定义

杨辉三角的构造方式非常简单:

  • 第一行是一个数字 1
  • 接下来每一行的第一个和最后一个数字都是 1
  • 其余位置的数字是它上方两数之和。

例如,前五行的杨辉三角可以表示如下:

       1
      1 1
     1 2 1
    1 3 3 1
   1 4 6 4 1

从上面的结构可以看到,第三行的 2 是第二行 11 的和,而第四行的 3 正是第三行的 12 的和。

杨辉三角的性质

  1. 对称性:每一行的数字是对称的。
  2. 和的特性:第 n 行的数字和为 2^n
  3. 组合数:第 n 行第 k 列的数字等于组合数 C(n, k),可表示为 n! / (k!(n-k)!)

Python 实现杨辉三角

现在,我们将用 Python 实现生成杨辉三角的功能。这段代码将生成前 n 行的杨辉三角,并以列表的形式输出每一行。

def generate_pascals_triangle(n):
    triangle = []
    for i in range(n):
        row = [1] * (i + 1)  # 每行开始时设置所有元素为1
        for j in range(1, i):
            row[j] = triangle[i-1][j-1] + triangle[i-1][j]  # 计算中间的元素
        triangle.append(row)
    return triangle

n = 5  # 输出前 5 行
triangle = generate_pascals_triangle(n)
for row in triangle:
    print(row)

代码讲解

  1. 初始化:首先定义一个空列表triangle,用来存储每一行的数字。
  2. 循环构建:外层循环控制行数,通过range(n)生成n行。
  3. 内层初始化:每一行用于存储数据的row列表首先全部设置为1。
  4. 计算中间项:对于每一行的中间数字,根据上面两行的相应位置计算。
  5. 保存结果:将生成的行添加到triangle列表中。

输出结果

运行上面的代码,输出将会是:

[1]
[1, 1]
[1, 2, 1]
[1, 3, 3, 1]
[1, 4, 6, 4, 1]

这样我们就可以清晰地看到前五行的杨辉三角。

关系图

为了更好地理解杨辉三角的结构,这里用 Mermaid 绘制了一张简单的示意图:

erDiagram
    TRiangle {
        INTEGER rowId
        INTEGER columnId
        INTEGER value
    }

    TRiangle ||--o{ Value: contains

上面的图展示了杨辉三角的每一行和列结构,行和列的交点是对应的值。

总结

杨辉三角不仅是一个美丽的数学模型,更是数学与计算机科学连接的桥梁。通过简单的 Python 代码,我们能迅速生成数十行的杨辉三角,体验到算法的魅力与计算的乐趣。研究杨辉三角的性质,更是能够让我们深入了解组合数学及其应用。

你可以根据需要调整参数n,生成不同数量的行,探索更深奥的规律,或进一步拓展此代码,例如添加函数来计算第n行第k个元素的值和统计整个三角形的和。希望本文能够激发你对数学和编程的热情,欢迎你进一步探索更多的数学乐趣!