【問題】楊輝三角形(如下圖)由許多有趣的性質,很多基礎公式中可以看到它的影子。比如:(x+
y)n(x+y)^n
(x+y)n
的展開式的係數就是三角形的某一行。
下一行的每個數字是上一行的兩個數字之和。
請程式設計輸出 楊輝三角形的前 n 行。
對於在邊緣的數字,上一行的 a[i], 或 a[i-1] 可能不存在,這時可以用 0 代替。
def
yang_hui
(n):
if n ==1:
return[1
] a = yang_hui(n-1)
b =for i in
range
(n):
a1 = a[i-1]
if i>=
1else
0 a2 = a[i]
if i<
len(a)
else
0return b
if __name__ ==
'__main__'
:for i in
range(10
):for j in yang_hui(i+1)
:print
(j, end=
' ')
print
()
另一種想法:觀察到每一行的第乙個數字與最後乙個數字肯定是1, 可以不用算,只從第2個數到倒數第2個數計算即可。
這樣就不需要用 if 判斷特殊的情況了。
def
yang_hui
(n):
if n ==1:
return[1
] a = yang_hui(n-1)
b =[1
]for i in
range(1
,n-1):
+ a[i-1]
)1)return b
if __name__ ==
'__main__'
:for i in
range(10
):for j in yang_hui(i+1)
:print
(j, end=
' ')
print
()
還有一種思路: 把前一行的資料,複製為兩行。如果把它們錯開一位垂直相加不就可以了嗎。
怎麼才能錯開一位
呢?上邊的前補0, 下邊的後補0就可以。
def
yang_hui
(n):
if n ==1:
return[1
] a = yang_hui(n-1)
b = a[:]
a.insert(0,
0)0)
c =for x,y in
zip(a,b)
: return c
if __name__ ==
'__main__'
:for i in
range(10
):for j in yang_hui(i+1)
:print
(j, end=
' ')
print
()
python楊輝三角 楊輝三角I II
給定乙個非負整數 numrows,生成楊輝三角的前 numrows 行。在楊輝三角中,每個數是它左上方和右上方的數的和。示例 輸入 5 輸出 1 1,1 1,2,1 1,3,3,1 1,4,6,4,1 可以一行一行錯位加,當然這裡提供更簡便的方法。任取一行描述 1,2,1 如何得到 1,3,3,1 ...
藍橋杯習題 楊輝三角(Python 3
楊輝三角形又稱pascal三角形,它的第i 1行是 a b i的展開式的係數。它的乙個重要性質是 三角形中的每個數字等於它兩肩上的數字相加。下面給出了楊輝三角形的前4行 11 1 1 2 1 1 3 3 1 給出n,輸出它的前n行。首先輸入n 然後定義階乘和組合數公式 最後用組合數公式計算出每個數並...
Python 楊輝三角
首先附上我們需要求得的楊輝三角 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 1,7,21,35,35,21,7,1 1,8,28,56,70,56,28,8,1 1,9,36,84,126,126,84,36,9,1 很顯...