楊輝三角是一道非常經典的題目。我們先來看楊輝三角的一些概述,以下來自百度百科
前提:每行端點與結尾的數爲1.
(與上圖中的n不同,這裏第一行定義爲n=1)
- 每個數等於它上方兩數之和。
- 每行數字左右對稱,由1開始逐漸變大。
- 第n行的數字有n項。
- 前n行共[(1+n)n]/2 個數。
- 第n行的m個數可表示爲 C(n-1,m-1),即爲從n-1個不同元素中取m-1個元素的組合數。
- 第n行的第m個數和第n-m+1個數相等 ,爲組合數性質之一。
- 每個數字等於上一行的左右兩個數字之和。可用此性質寫出整個楊輝三角。即第n+1行的第i個數等於第n行的第i-1個數和第i個數之和,這也是組合數的性質之一。即 C(n+1,i)=C(n,i)+C(n,i-1)。
通過這些性質我們可以知道一些規律,當然圖片會更直觀。
直白一點就是一個數字是等於他上一行的左右之和,頭尾都是數字1.
接下來看代碼:
這裏自定義了一個函數triangles(N),輸入數字N將會形成一個n行的楊輝三角
line.append(1)給Pyhton的列表尾部追加元素即數字1
def triangles(N):
line = [1]
for _ in range(N):
yield line
for i in range(1, len(line)):
line[i] = pre[i] + pre[i - 1]
line.append(1)
pre = line[:]
N = int(input("請輸入一個整數:"))
for i in triangles(N):
print(i)