Python練習(18)楊輝三角-難
阿新 • • 發佈:2018-12-15
根據輸入行數,打印出楊輝三角,如圖所示。 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
- 分析
開始想用二維陣列表示,但是這是一個下三角矩陣,上三角是空的,但是二維陣列無法輸出空,不滿足。 想著用一個列表表示,規律是,每行的第i個元素,等於上一行的第i個與第i-1個元素的和。但是不用二維陣列的話,怎麼表示上一行元素呢?
-
程式碼
def yang(floor): now = [] for x in xrange(floor): now.append(1) for index in xrange(len(now) - 2,0,-1): now[index] = now[index - 1] + now[index] print now yang(5)
- 總結
迭代產生每一行元素
用迭代方法,可以求出每一行新的元素,關係就是now[index] = now[index - 1] + now[index];
索引要從大到小進行迭代,可以試一下如果變成了從小到大:in xrange(1,len(now)-1)那麼結果就會變成:
那是因為迭代的時候要用到index-1,也就是小索引,如果每次小索引先更新的話,迭代產生大索引的時候就會使用剛剛產生的小索引,引用的就不再是上一行的元素而是本行的index-1元素了;
另外,保持其他元素不變又要使每一行自動增加一個元素,a.append(1)很巧妙。
參考:https://blog.csdn.net/u010019717/article/details/51450965#3-楊輝三角-易
- 總結
迭代產生每一行元素
用迭代方法,可以求出每一行新的元素,關係就是now[index] = now[index - 1] + now[index];
索引要從大到小進行迭代,可以試一下如果變成了從小到大:in xrange(1,len(now)-1)那麼結果就會變成:
那是因為迭代的時候要用到index-1,也就是小索引,如果每次小索引先更新的話,迭代產生大索引的時候就會使用剛剛產生的小索引,引用的就不再是上一行的元素而是本行的index-1元素了;
另外,保持其他元素不變又要使每一行自動增加一個元素,a.append(1)很巧妙。
參考:https://blog.csdn.net/u010019717/article/details/51450965#3-楊輝三角-易