美文网首页
小练习-杨辉三角Python实现

小练习-杨辉三角Python实现

作者: 旭Louis | 来源:发表于2020-03-05 11:05 被阅读0次

杨辉三角

杨辉三角,是二项式系数在三角形中的一种几何排列。

(1)每个数等于它上方两数之和。
(2)每行数字左右对称,由1开始逐渐变大。
(3)最外层的数字总是1
(4)第二层是自然数,
(5)下一层数字之和是上一层的2倍
(6)(a+b)^n的展开式中的各项系数依次对应杨辉三角的第(n+1)行中的每一项,这正是定义中二项式系数。如最熟悉的 二项式分解,(a+b)2=a2+2ab+b^2,它的系数对应就是杨辉三角的第二层【1,2,1】。

利用第一个和第二个特性,我们就很方便地推导出杨辉三角每一行的数值。只要给出初始值,第一行只有一个【1】,每一行总是【1】开始,然后根据每个数等于它上方两数之和,便能求解出任何位置的数值,代码如下。

def pascal(depth):
    """杨辉三角"""
    res = [[1]] # 第一层
    for i in range(0, depth):
        layer = [1] # 特性3:每一层都是1开始
        for j in range(0, len(res[i]) - 1):
            # 特性1:每个数等于它上方两数之和
            layer.append(res[i][j] + res[i][j + 1]) 
        layer.append(1) # 特性3:每一层都是1结尾
        res.append(layer) # 把每一层的数列加到结果中
    return res

def print_pascal(data):
    """输出杨辉三角"""
    for squence in data:
        total = 0 #一层数值求和结果
        for i in squence:
            total += i
            print(i, end=' ')
        print("=%d" % total, end=' ') # end表示输出结尾
        print()# 默认的输出结尾是\n,回车另起一行。

用pascal()函数返回的结果作为输入,我们再看看print_pascal()函数处理后的样子。

print_pascal(pascal(9))
# -----------结果-------------
1 =1 
1 1 =2 
1 2 1 =4 
1 3 3 1 =8 
1 4 6 4 1 =16 
1 5 10 10 5 1 =32 
1 6 15 20 15 6 1 =64 
1 7 21 35 35 21 7 1 =128 
1 8 28 56 70 56 28 8 1 =256 
1 9 36 84 126 126 84 36 9 1 =512 

这样显示就一目了然,顺带验证了了它的第五个特性,真的是一个很神奇的规律,其实它还有更多有趣的规律,比如我们按照一个斜度去求和数列,而不是按一层,你会发现,竟然会出现斐波那契数列的项


image.png

杨辉三角和斐波拉契数列的关系如下:
F(0) = C(0,0)=1
F(1) = C(1,0)=1
F(2) = C(2,0) + C(1,1)=1+1=2
F(3) = C(3,0) + C(2,1)=1+2=3
F(4) = C(4,0) + C(3,1) + C(2,2)=1+3+1=5
由此推到出F(n)=C(n-m, m)(m<=n-m)

def pascal_to_fibonacci(data):
    result = []
    for n in range(len(data)):
        fib = [] # 初始化每一层的数列,为空
        m = 0
        while n - m >= m:
            # 根据定义,杨辉三角和斐波拉契数列的转化下标关系
            fib.append(data[n-m][m])
            m += 1
        result.append(fib)
    print_pascal(result) # 借用杨辉三角输出函数输出每一层的和

测试一下当n=6的时候,结果如何。

pascal_to_fibonacci(pascal(6))
# -----------结果-------------
1 =1 
1 =1 
1 1 =2 
1 2 =3 
1 3 1 =5 
1 4 3 =8 
1 5 6 1 =13 

相关文章

  • 用python实现杨辉三角

    来自廖雪峰官方网站python教程课后练习 用python实现杨辉三角: 测试用例如下:

  • 小练习-杨辉三角Python实现

    杨辉三角 杨辉三角,是二项式系数在三角形中的一种几何排列。 (1)每个数等于它上方两数之和。(2)每行数字左右对称...

  • python实现杨辉三角

    使用python实现杨辉三角python教程-生成器 杨辉三角的特点:1.每行端点与结尾的数为12.每个数等于它上...

  • python输出杨辉三角

    杨辉三角定义 今天学习到的一个python代码实现非常简洁网址如下:python 生成器对于像我这样python初...

  • Something For Practice

    Python Python 练习册,每天一个小程序 Github标星57k+,如何用Python实现所有算法! -...

  • 打印杨辉三角形

    杨辉三角形Java实现打印杨辉三角形,代码如下:

  • Python实现杨辉三角

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

  • Python实现杨辉三角

    要实现的杨辉三角: 方法一: 思路:申请一个n行的二维数组打印出n行的依次递增一个元素,且元素都为一列表: 如下图...

  • Python 实现杨辉三角

    使用生成器实现杨辉三角,在网上找到的最佳代码(抱歉忘记出处了),大神写得太好了。

  • 如何用Excel实现杨辉三角

    学过数学的二项式定理,对于杨辉三角就再熟悉不过了。今天,小编要给大家分享的是如何用Excel实现杨辉三角。 操作步...

网友评论

      本文标题:小练习-杨辉三角Python实现

      本文链接:https://www.haomeiwen.com/subject/hkptrhtx.html