当前位置: 移动技术网 > IT编程>脚本编程>Python > Python生成器实现杨辉三角

Python生成器实现杨辉三角

2018年03月02日  | 移动技术网IT编程  | 我要评论

沙拉的做法,浙江移动梦网,菜园坝汽车站时刻表

杨辉三角

杨辉三角,是二项式系数在三角形中的一种几何排列。在欧洲,这个表叫做帕斯卡三角形。帕斯卡(1623----1662)是在1654年发现这一规律的,比杨辉要迟393年,比贾宪迟600年。

vcc=" src="/uploadfile/Collfiles/20170914/20170914101655215.jpg" />

很容易就得出规律: 除根以外,每个数都由它上层的左右两数之和,一个数不存在即视为0。根为1

由此规律,易得每层边界数值为1

下面用Python的生成器来实现这个著名的三角:)

生成器实现

# _*_ coding: utf-8 _*_

def yangHui(level):
    for i in range(level):
        # 由于根不符合抽象出的规律,单独处理
        if i == 0:
            yield [1]
            gen = yangHui(level)
        else:
            current_level = [1]
            prev_level = next(gen)
            try:
                for j in range(i):
                    current_level.append(prev_level[j] + prev_level[j+1])
            # 这里会产生`IndexError`异常,因为最右边只有一个加数了,j+1过界
            except:
                current_level.append(prev_level[j])
                #pass
            finally:
                #current_level.append(1)
                yield current_level

if __name__ == '__main__':
    for i in yangHui(10):
        print(i)                

运行结果如下:

wk:mysource mac$ python yanghui.py 
[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, 7, 21, 35, 35, 21, 7, 1]
[1, 8, 28, 56, 70, 56, 28, 8, 1]
[1, 9, 36, 84, 126, 126, 84, 36, 9, 1]

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网