小練習(xí)-楊輝三角Python實(shí)現(xiàn)

楊輝三角

楊輝三角心俗,是二項(xiàng)式系數(shù)在三角形中的一種幾何排列流酬。

(1)每個(gè)數(shù)等于它上方兩數(shù)之和。
(2)每行數(shù)字左右對(duì)稱甘畅,由1開始逐漸變大埂蕊。
(3)最外層的數(shù)字總是1
(4)第二層是自然數(shù),
(5)下一層數(shù)字之和是上一層的2倍
(6)(a+b)^n的展開式中的各項(xiàng)系數(shù)依次對(duì)應(yīng)楊輝三角的第(n+1)行中的每一項(xiàng)疏唾,這正是定義中二項(xiàng)式系數(shù)蓄氧。如最熟悉的 二項(xiàng)式分解,(a+b)2=a2+2ab+b^2槐脏,它的系數(shù)對(duì)應(yīng)就是楊輝三角的第二層【1,2,1】喉童。

利用第一個(gè)和第二個(gè)特性,我們就很方便地推導(dǎo)出楊輝三角每一行的數(shù)值准给。只要給出初始值泄朴,第一行只有一個(gè)【1】,每一行總是【1】開始露氮,然后根據(jù)每個(gè)數(shù)等于它上方兩數(shù)之和祖灰,便能求解出任何位置的數(shù)值,代碼如下畔规。

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:每個(gè)數(shù)等于它上方兩數(shù)之和
            layer.append(res[i][j] + res[i][j + 1]) 
        layer.append(1) # 特性3:每一層都是1結(jié)尾
        res.append(layer) # 把每一層的數(shù)列加到結(jié)果中
    return res

def print_pascal(data):
    """輸出楊輝三角"""
    for squence in data:
        total = 0 #一層數(shù)值求和結(jié)果
        for i in squence:
            total += i
            print(i, end=' ')
        print("=%d" % total, end=' ') # end表示輸出結(jié)尾
        print()# 默認(rèn)的輸出結(jié)尾是\n,回車另起一行局扶。

用pascal()函數(shù)返回的結(jié)果作為輸入,我們?cè)倏纯磒rint_pascal()函數(shù)處理后的樣子。

print_pascal(pascal(9))
# -----------結(jié)果-------------
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 

這樣顯示就一目了然三妈,順帶驗(yàn)證了了它的第五個(gè)特性畜埋,真的是一個(gè)很神奇的規(guī)律,其實(shí)它還有更多有趣的規(guī)律畴蒲,比如我們按照一個(gè)斜度去求和數(shù)列悠鞍,而不是按一層,你會(huì)發(fā)現(xiàn)模燥,竟然會(huì)出現(xiàn)斐波那契數(shù)列的項(xiàng)


image.png

楊輝三角和斐波拉契數(shù)列的關(guān)系如下:
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 = [] # 初始化每一層的數(shù)列咖祭,為空
        m = 0
        while n - m >= m:
            # 根據(jù)定義,楊輝三角和斐波拉契數(shù)列的轉(zhuǎn)化下標(biāo)關(guān)系
            fib.append(data[n-m][m])
            m += 1
        result.append(fib)
    print_pascal(result) # 借用楊輝三角輸出函數(shù)輸出每一層的和

測(cè)試一下當(dāng)n=6的時(shí)候蔫骂,結(jié)果如何么翰。

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

想更多了解Python,可以購(gòu)買我寫的書 《數(shù)據(jù)結(jié)構(gòu)和算法基礎(chǔ)Python語(yǔ)言實(shí)現(xiàn)》


數(shù)據(jù)結(jié)構(gòu)和算法基礎(chǔ)Python語(yǔ)言實(shí)現(xiàn)
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末辽旋,一起剝皮案震驚了整個(gè)濱河市浩嫌,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌补胚,老刑警劉巖码耐,帶你破解...
    沈念sama閱讀 221,888評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異溶其,居然都是意外死亡伐坏,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,677評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門握联,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人每瞒,你說(shuō)我怎么就攤上這事金闽。” “怎么了剿骨?”我有些...
    開封第一講書人閱讀 168,386評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵代芜,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我浓利,道長(zhǎng)挤庇,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,726評(píng)論 1 297
  • 正文 為了忘掉前任贷掖,我火速辦了婚禮嫡秕,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘苹威。我一直安慰自己昆咽,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,729評(píng)論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著掷酗,像睡著了一般调违。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上泻轰,一...
    開封第一講書人閱讀 52,337評(píng)論 1 310
  • 那天技肩,我揣著相機(jī)與錄音,去河邊找鬼浮声。 笑死虚婿,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的阿蝶。 我是一名探鬼主播雳锋,決...
    沈念sama閱讀 40,902評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼羡洁!你這毒婦竟也來(lái)了玷过?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,807評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤筑煮,失蹤者是張志新(化名)和其女友劉穎辛蚊,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體真仲,經(jīng)...
    沈念sama閱讀 46,349評(píng)論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡袋马,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,439評(píng)論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了秸应。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片虑凛。...
    茶點(diǎn)故事閱讀 40,567評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖软啼,靈堂內(nèi)的尸體忽然破棺而出桑谍,到底是詐尸還是另有隱情,我是刑警寧澤祸挪,帶...
    沈念sama閱讀 36,242評(píng)論 5 350
  • 正文 年R本政府宣布锣披,位于F島的核電站,受9級(jí)特大地震影響贿条,放射性物質(zhì)發(fā)生泄漏雹仿。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,933評(píng)論 3 334
  • 文/蒙蒙 一整以、第九天 我趴在偏房一處隱蔽的房頂上張望胧辽。 院中可真熱鬧,春花似錦悄蕾、人聲如沸票顾。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,420評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)奠骄。三九已至豆同,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間含鳞,已是汗流浹背影锈。 一陣腳步聲響...
    開封第一講書人閱讀 33,531評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留蝉绷,地道東北人鸭廷。 一個(gè)月前我還...
    沈念sama閱讀 48,995評(píng)論 3 377
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像熔吗,于是被迫代替她去往敵國(guó)和親辆床。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,585評(píng)論 2 359

推薦閱讀更多精彩內(nèi)容