Python實現:楊輝三角思路



 楊輝三角有以下幾個特點 :

  1. 每個數等於它上方兩數之和。
  2. 每行數字左右對稱,由1開始逐漸變大。
  3. 第n行的數字有n項。
  4. 第n行數字和為2 n-1
  5. 第n行的m個數可表示為 C(n-1, m-1),即為從n-1個不同元素中取m-1個元素的組合數。
  6. 第n行的第m個數和第n-m+1個數相等 ,為 組合數性質之一。
            1
          1   1
        1   2   1
      1   3   3   1
    1   4   6   4   1
  1   5   10  10   5    1    

    我的思路是由於第一行只有一個元素1,所以第二行也一定是1。所以重點在計算后面幾行輸出的數字,先把它輸進列表。

由上圖可以知道第三行 列表第一個元素[2 ] 是第2行列表第0個元素和第一個元素的和,因為第0個元素一直是1不用管它,所以有l[a]=l[a]+l[a+1],由上一行輸出下一行,現在第三行

是[1,2],然后尾部加上一個[1],就可以得到第三行,列表長度也加了一個,依次類推第四行為[1,3,3],而后再加[1],輸出第四行,代碼實現如下

1 def yanghui(n):
2     l=[1,1]
3     for x in range(1,n):
4         for a in range(x):
5             l[a]=l[a]+l[a+1]
6         l.insert(0,1)
7     return l

    后面將每一行按照格式輸出即可,

再統一打印



1 x=int(input())
2 a=1
3 b=0
4 print((x-a+1)*' ',[1])
5 while a<x:
6     b=yanghui(a)
7     print((x-a)*' ',b)
8     a+=1

比起需要用到生成器的算法更好理解,也有些取巧了,可以作為一種思路




免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM