Python生成器實現楊輝三角

楊輝三角

楊輝三角,是二項式係數在三角形中的一種幾何排列。在歐洲,這個表叫做帕斯卡三角形。帕斯卡(1623----1662)是在1654年發現這一規律的,比楊輝要遲393年,比賈憲遲600年。(引自於:百度百科)

楊輝三角

很容易就得出規律: 除根以外,每個數都由它上層的左右兩數之和,一個數不存在即視爲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]
發佈了60 篇原創文章 · 獲贊 52 · 訪問量 35萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章