Python实现杨辉三角(2种实现方案)

这篇具有很好参考价值的文章主要介绍了Python实现杨辉三角(2种实现方案)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

杨辉三角形,又称贾宪三角形、帕斯卡三角形,是二项式系数在三角形中的一种几何排列。

下图显示了杨辉三角的前 7 行:

Python实现杨辉三角(2种实现方案)

递归打印杨辉三角

杨辉三角形中的数,正是(x+y)的 N 次方幂展开式各项的系数,下面以递归的方法来打印杨辉三角形。

从杨辉三角形的特点出发,可以总结出:

  • 第 x 行有 x 个值(设起始行为第1行)。
  • 对于第 x 行的第 y(y>=3)个值,有:当 y=1 或 y=x 时,其值为 1;当 y!=1 且 y!=x 时,其值为第 x-1 行的第 y-1 个值与第 x-1 行的第 y 个值之和。


将这些特点提炼成数学公式,则位于杨辉三角第 x 行第 y 列的值为:
 

Python实现杨辉三角(2种实现方案)


根据上面的分析,完整的程序如下:

def triangles(x, y):
    if y == 1 or y == x: # y=1或y=x时,函数返回值为1
        return 1
    else:
        z = triangles(x-1, y-1) + triangles(x-1, y) # y为其他值时的递推公式
        return z
if __name__ == "__main__":
    n = int(input("请输入杨辉三角的行数:"))
    for i in range(1, n+1): # 输出n行
        for j in range(0, n-i+1):
            print("   ", end=" ")
        for j in range(1, i+1):
            # 调用递归函数,输出第i行的第j个值
            print("%6d  " %(triangles(i, j)), end=" ")
        print()

运行结果为:

请输入杨辉三角的行数:7
                                 1  
                             1        1  
                         1        2        1  
                     1        3        3        1  
                 1        4        6        4        1  
             1        5       10       10        5        1  
         1        6       15       20       15        6        1

二维数组打印杨辉三角形

由于位于杨辉三角形两个腰上的数都为 1,其他位置上的数等于它肩上两个数之和,基于杨辉三角形的这个特点,就可以使用二维数组打印出杨辉三角形。

先定义二维数组 a[N][N],N 为常量,大于要打印的行数 n。再将每行的第一个数和最后一个数赋值为 1,即 a[i][1]=a[i][i]=1。除了每行的第一个数和最后一个数以外,每行上的其他数都为其肩上的两数之和,即 a[i][j]=a[i-1][j-1]+a[i-1][j]。

1) 计算杨辉三角形中的数值并存入二维数组

定义 row 和 column 两个变量分别代表杨辉三角形的行和列,变量 n 表示要打印的行数。

# 计算杨辉三角中的数值并存入二维数组a中
for row in range(1, n+1):
    # 令每行两边的数为1,循环从1开始,每行第一个数存放在a[row][1]中
    a[row][1] = a[row][row] = 1
for row in range(3, n+1):
    for column in range(2, (row-1)+1):
        # 计算其他位置的值并存入二维数组
        a[row][column] = a[row-1][column-1] + a[row-1][column]

2) 打印空格

在每行输出之前,先打印空格占位,可使输出更美观。

第 1 行打印 3(n-1) 个空格,第 2 行打印 3(n-2) 个空格.....第 k 行打印 3(n-k)个空格。

for row in range(1, n+1):
    for k in range(1, (n-row)+1):
        print("   ", end="")

3) 打印杨辉三角形中的数

输出杨辉三角形每一行之前都先打印空格,之后再使用下面的代码输出每行中的数值。

# 打印杨辉三角形
for row in range(1, n+1):
    for k in range(1, (n-row)+1):
        print("   ", end="") # 在每行输出数之前先打印空格占位,使输出更美观
    # column<=row表示不输出数组中其他的数,只输出所需的数
    for column in range(1, row+1):
        print("%6d" %(a[row][column]), end=" ")
    print() # 当一行输出完以后换行继续下一行的输出

现在我们就需要把刚才的程序进行组合,构成完整的程序:

if __name__ == "__main__":
    n = 0
    a = [([0] * 14) for i in range(14)] # 定义一个行为14、列为14的二维数组
    while n <= 0 or n >= 13: # 控制打印的行数,行数过大会造成显示不规范
        n = int(input("请输入杨辉三角的行数:"))
    print("打印 %d 行杨辉三角如下:" %n)
    # 计算杨辉三角中的数值并存入二维数组a中
    for row in range(1, n+1):
        # 令每行两边的数为1,循环从1开始,每行第一个数存放在a[row][1]中
        a[row][1] = a[row][row] = 1
    for row in range(3, n+1):
        for column in range(2, (row-1)+1):
            # 计算其他位置的值并存入二维数组
            a[row][column] = a[row-1][column-1] + a[row-1][column]
    # 打印杨辉三角形
    for row in range(1, n+1):
        for k in range(1, (n-row)+1):
            print("   ", end="") # 在每行输出数之前先打印空格占位,使输出更美观
        # column<=row表示不输出数组中其他的数,只输出所需的数
        for column in range(1, row+1):
            print("%6d" %(a[row][column]), end=" ")
        print() # 当一行输出完以后换行继续下一行的输出

运行结果为:文章来源地址https://www.toymoban.com/news/detail-417325.html

请输入杨辉三角的行数:7
打印 7 行杨辉三角如下:
                       1
                    1      1
                 1      2      1
              1      3      3      1
           1      4      6      4      1
        1      5     10     10      5      1
     1      6     15     20     15      6      1

到了这里,关于Python实现杨辉三角(2种实现方案)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 使用Python实现高效数据下采样:详解最大三角形三桶(LTTB)算法

    引言 在我们接触大规模的数据集时,数据的数量往往会让人望而却步。数据分析、机器学习等领域的专业人员需要对这些数据进行处理,以便更好地理解数据,以及利用数据进行预测。然而,处理大规模数据的计算成本往往非常高,这时候,就需要引入下采样(Downsampling)的

    2024年02月14日
    浏览(40)
  • [C语言] [典例详解] 打印杨辉三角(找规律简单实现)

            用C语言打印杨辉三角。杨辉三角参考图如下:         于是不清楚杨辉三角的同学们可以上网查查,可以立刻知道它的相关推理归纳和公式总结。它的简介如下:  所以我们可以使用二项式的方法来写代码。但我下面要讲的是直接观察已有数据来写。       

    2024年02月01日
    浏览(42)
  • [C语言][典例详解]打印杨辉三角(找规律简单实现)

    目录 杨辉三角的相关知识 杨辉三角图:   杨辉三角的规律 在编程中实现 第一步 :我们先实现数字的打印,后面再加上空格构成三角形形状; ​编辑 1.首先我们可以直观的看出三角形的两个斜边都是1;所以我们先打印斜边的1(代码实现+分析+运行效果:) 2.打印中间的数

    2024年02月08日
    浏览(46)
  • css实现圆角三角形,圆角三角形的实现

    今天给大家带来一个如何实现圆角三角形的方案,这个方案虽然可以实现,但是也是借助拼凑等方式来实现的,假如想一个div来实现圆角三角形,还是比较困难的。之前文章讲了如何实现对话框,里面介绍了三角形的实现方式。今天讲讲如何实现圆角三角形。 想要生成一个带

    2024年02月09日
    浏览(53)
  • python代码实现判断三角形类型,使用pytest进行代码测试,生成allure测试报告

    一、python代码判断三角形类型 写代码之前首先我们要知道满足三角形的条件: 前提条件:三角形边长都为大于0的数字 构成三角形:两边之和大于第三边 即 a+b c  and a+cb and  b+ca   (此三个条件需要同时满足) 满足构成三角形之后,要考虑构成三角形的类型: 三角形分为:

    2024年02月05日
    浏览(49)
  • 用python写九九乘法表(左上三角、左下三角、右上三角、右下三角、正三角形、倒三角形格式)

    1.左上三角格式:   2.左下三角格式:   3.右上三角格式:     4.右下角格式:     5.倒三角格式:      

    2024年02月11日
    浏览(60)
  • python求三角形面积

     运用Python求三角形面积,代码如下 在运行后,可得   输入三边长后通过三角形面积公式,可求得三角形的面积,其中需要得知三角形如何运用周长求面积,周长公式为s = (a + b + c) / 2,后用面积公式area = (s*(s-a)*(s-b)*(s-c)) ** 0.5最后输出求得三角形的面积公式。  

    2024年02月11日
    浏览(48)
  • css实现三角形

       1. Border 2. transform 3.  :before 和 :after 伪元素 4. clip-path

    2024年02月09日
    浏览(45)
  • 120. 三角形最小路径和 Python

    给定一个三角形 triangle ,找出自顶向下的最小路径和。 每一步只能移动到下一行中相邻的结点上。 相邻的结点 在这里指的是 下标 与 上一层结点下标 相同或者等于 上一层结点下标 + 1 的两个结点。也就是说,如果正位于当前行的下标 i ,那么下一步可以移动到下一行的下

    2023年04月22日
    浏览(43)
  • 用 CSS 实现画三角形

     

    2024年02月14日
    浏览(36)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包