杨辉三角形的规则就是每行的第一个数字和最后一个数字为1之外,其余每个数字等于上一行对应两个数字的和。
1、使用二维数组实现
def triangle(row):
result = []
for i in range(row):
if i == 0: # 第一行
result.append([1])
elif i == 1: # 第二行
result.append([1,1])
else:
y = []
for j in range(i+1): # 第i行有i+1个数
if j == 0 or j == i:
y.append(1) # 就是每行的第一个元素 和 最后一个元素 为1
else:
y.append(result[i-1][j-1]+result[i-1][j])
result.append(y)
return result
if __name__ == "__main__":
result = triangle(6)
for row in result:
print(row)
结果如下:
2、生成器实现
def triangle():
result = [1]
while True:
yield result
result = [1] + [x+y for x,y in zip(result[:-1],result[1:])] + [1]
if __name__ == "__main__":
n = 0
for i in triangle():
print(i)
n += 1
if n == 10:
break
其结果如下: