1. 程式人生 > >Python練習(18)楊輝三角-難

Python練習(18)楊輝三角-難

根據輸入行數,打印出楊輝三角,如圖所示。 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-楊輝三角-易