杨辉三角形的规则就是每行的第一个数字和最后一个数字为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) # 就是每行的第一个元素 和 最后一个元素 为1else:y.append(result[i-1][j-1]+result[i-1][j])result.append(y)return resultif __name__ == "__main__":result = triangle(6)for row in result:print(row)
结果如下:
2、生成器实现
def triangle():result = [1]while True:yield resultresult = [1] + [x+y for x,y in zip(result[:-1],result[1:])] + [1]
if __name__ == "__main__":n = 0for i in triangle():print(i)n += 1if n == 10:break
其结果如下: