Python使用生成器generator打印杨辉三角的实现方式

杨辉三角

杨辉三角形,又称帕斯卡三角形、贾宪三角形、海亚姆三角形、巴斯卡三角形,是二项式系数的一种写法,形似三角形,在中国首现于南宋杨辉的《详解九章算法》得名,书中杨辉说明是引自贾宪的《释锁算书》,故又名贾宪三角形。

 

杨辉三角以正整数构成,数字左右对称,每行由1开始逐渐变大,然后变小,回到1

杨辉三角每一行的和是2的幂

行的数字个数为个。

从第三行开始,除了第一个数字和最后一个数字为1,中间的数字都是上一行数字相邻两数字之和。


1行:[1]以每一行数字为
list

2行:[1,1]

3行:[1,2,1]

4行:[1,3,3,1]

5行:[1,4,6,4,1]

def yangHuiSanJiao(max_line):
    n=1
    ali = []
    while n<max_line:
        ali2 = []
        if n<=2:
            ali.append(1)
            yield ali
        else:
            for inn in range(1,len(ali)):
                ali2.append(ali[inn-1]+ali[inn])
            ali2.insert(0,1)
            ali2.append(1)
            ali = ali2
            yield ali
        n+=1
for li in yangHuiSanJiao(9):
    print(li)

 

posted @ 2019-08-03 15:27  墨流引  阅读(443)  评论(0)    收藏  举报