楊輝三角有以下幾個特點 : 每個數等於它上方兩數之和。 每行數字左右對稱,由1開始逐漸變大。 第n行的數字有n項。 第n行數字和為2n-1。 第n行的m個數可表示為 C(n-1,m-1),即為從n-1個不同元素中取m-1個元素的組合數。 第n行的第m個數和第n-m+1個數相等 ,為組合數性質之一。 ...
楊輝三角有以下幾個特點 :
- 每個數等於它上方兩數之和。
- 每行數字左右對稱,由1開始逐漸變大。
- 第n行的數字有n項。
- 第n行數字和為2n-1。
- 第n行的m個數可表示為 C(n-1,m-1),即為從n-1個不同元素中取m-1個元素的組合數。
- 第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
比起需要用到生成器的演算法更好理解,也有些取巧了,可以作為一種思路