Python:利用二次项系数原理实现杨辉三角
程序员文章站
2022-06-06 21:01:56
...
杨辉三角
(a+b)0 = 1
(a+b)1 = a + b
(a+b)2 = a2 + 2ab + b2
(a+b)3 = a3 + 3a2b + 3ab2 + b3
…
在计算系数时,我们可以使用C(n,m) = n!/(n-m)!/m!
因此我们可以用如下代码实现杨辉三角形的输出。
def factorial(x): #定义阶乘,即x!
if x == 0:
return 1
if x == 1:
return x
return x * factorial(x-1)
def yanghui(n):
m = 0
print(' ' * (n-2),'1') #n-2是因为第一行前面应有n-1个空格,而“,”又代表一个空格,所有需要删去多余的空格
while m < n-1:
for i in range(n-m-2,0,-1): #前面的空格数从多变少
print(' ', end = '') #print中end的默认值为换行,可我们想要空格在一行输出,需要更改end的默认值
for j in range(0,m+2): #第n+1行第r项系数:n!/(n-r)!/r!
out = factorial(m+1)//factorial(m+1-j)//factorial(j) #注意要用//否则会成为浮点数
print(str(out),end = ' ')
m += 1
print('\r')
n = int(input())
yanghui(n)
输出: