python列印楊輝三角,第m行第k個數,多種方法

2021-10-04 02:44:46 字數 2610 閱讀 7319

第m行有m項,m是正整數,因此k一定不會大於m,這個需求需要儲存m行的資料,那麼可以使用乙個巢狀結構[,,]

m=int(input('行》'))

k=int(input('第幾個數》'))

********=

for i in range(m):

row=[1] #所有行都以1開頭

if i==0:

continue

for j in range(1,i):

print("--------------------------------")

print(********)

print("--------------------------------")

print("第%d行第%d個數為:%d"%(m,k,********[m-1][k-1]))

組合數方式:根據楊輝三角的定理,第n行的m個數(m>0且n>0)可表示為c(n-1,m-1),即為從n-1個不同元素中取m-1個元素的組合數

組合數公式:有m個不同的元素,任意取n(n≤m)個元素,記作c(m,n),則c(m,n)=m!/(n!(m-n)!) =c(m,m-n)

m = int(input('行》'))

k = int(input('列》')) # 則c(n,r)=c(m-1,k-1)=(m-1)!/((k-1)!(m-r)!)= n!/(r!(n-r)!)

n = m - 1

r = k - 1

d = n - r

targets = #r, n-r, n

factorial = 1 #可以加入k為1或m的判斷,返回1

for i in range(1,n+1):

factorial *= i

if i == r:

if i == d:

if i == n:

print(targets[2]//(targets[0]*targets[1]))

n = int(input('>>'))

tiangle=[[1],[1,1]] #預先定義前兩行

for i in range(2,n):

per=tiangle[i -1]

cur = [1] #建立新行,首位為1

for j in range(i-1): #迴圈新增中間值

print(tiangle) #將新生成的行新增到總列表

n = int(input('>>'))

******** = [[1],[1,1]]

for i in range(2,n):

row = [1]*(i + 1) #列印第n行先建立出n個元素列表

pre = ********[i - 1]

for j in range(i//2): #推算該行前一半的值

val = pre[j] + pre[j + 1]

row[j + 1] = val

row[ - j - 2] = val #對稱賦值

print(********)

舉例:計算前6行

n = 6

row = [1] * n #一次性開闢足夠的空間

for i in range(n):

offset = n – i

z = 1 #因為會有覆蓋影響計算,所以引入乙個臨時變數

for j in range(1,i//2+1): #對稱性

val = z + row[j]

row[j],z = val,row[j]

if i != 2*j:

row[-j-offset] = val

print(row[:i+1]) #從row的第乙個元素列印到第i個

一次性開闢好n個長度的空間,每次推算新行時不生成新的列表,在原來的基礎上賦值替換。

n = int(input('>>'))

row = [1]*n #一次性開闢空間

for i in range(n):

z = 1

for j in range(i//2):

val = z +row[j+1] #計算出來的新值會影響後面的計算,使用臨時變數置換一下

z = row[j+1]

row[j+1]=val

row[i-j-1]=val #對稱賦值 row[j+1]=row[i-j-1]

print(i,end='\t')

print(row[:i+1]) #最後在總列表中擷取當前計算的行長度列印出來

Python列印楊輝三角

最近在看廖雪峰的python教程,學到生成器時用生成器輸出楊輝三角 def s l1 l2 m 0while true if m 0 elif m 1 else for k in range len l1 print k if k 0 l1 k l2 k l2 k 1 l2 l1 m m 1 yie...

python 列印楊輝三角

楊輝三角最本質的特徵是,它的兩條斜邊都是由數字1組成的,而其餘的數則是等於它肩上的兩個數之和。def yanghui n result 1 1,1 初始化楊輝三角 line 1,1 楊輝三角的特徵,斜邊都是數字1 for i in range 2,n r for j in range len lin...

列印楊輝三角python

特點 楊輝三角的每行行首與每行結尾的數都為1.而且,每個數等於其左上及其右上二數的和 def yanghui num 列印楊輝三角 param num 列印的行數 return yh num for row in range len yh yh row none row 1 for col in r...