问题描述
杨辉三角形又称Pascal三角形,它的第i+1行是(a+b)i的展开式的系数。
它的一个重要性质是:三角形中的每个数字等于它两肩上的数字相加。
下面给出了杨辉三角形的前4行:
1
1 1
1 2 1
1 3 3 1
给出n,输出它的前n行。
大致思路
首先输入n
然后定义阶乘和组合数公式
最后用组合数公式计算出每个数并输出
代码
def fac(a):
if a == 1:
return 1
else:
return a*fac(a-1)
def com(r, m):
if m == r:
return 1
elif r == 0:
return 1
else:
return int(fac(m) / (fac(m - r) * fac(r)))
n = int(input())
for i in range(1, n+1):
for j in range(i):
print(com(j, i-1), end=' ')
print('')