python3 題解(7)楊輝三角

2021-09-26 20:24:51 字數 1712 閱讀 5855

【問題】楊輝三角形(如下圖)由許多有趣的性質,很多基礎公式中可以看到它的影子。比如:(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 很顯...