杨辉三角的下一行等于上一行相邻的两个值之和,所以可以可以将上一行复制两副本,然后错位相加,前后用0补齐即可。比如1 的下一行应该是1 1,可以复制两个副本1 和1错位用0补齐即为01,10,这样相加即可得到第二行,以此类推。
代码如下:
def triangles(n):
tr=[1];
x=1
while x<=n:
yield tr;
tr01=[0]+tr;#错位0补齐
tr02=tr+[0];
tr=[]
x+=1
for i in range(x):
tr.append(tr01[i]+tr02[i])
for t in triangles(10):
print(t)