Hi,大家好,我是编程小6,很荣幸遇见你,我把这些年在开发过程中遇到的问题或想法写出来,今天说一说杨辉三角的python代码_杨辉三角计算公式,希望能够帮助你!!!。
杨辉三角,是二项式系数在三角形中的一种几何排列,中国南宋数学家杨辉1261年所著的《详解九章算法》一书中出现
将杨辉三角每次计算时,都抽象成每行后面先增加一个0
于是本行第i个元素就等于上一行的(i-1)个元素和i元素的和(每行第0个元素是上一行抽象后的第0个元素和第(0-1)个元素,即抽象出来的0与1的和)
抽象出来的0为下一行提供足够的遍历次数
[1, 0]
[1, 1, 0]
[1, 2, 1, 0]
[1, 3, 3, 1, 0]
[1, 4, 6, 4, 1, 0]
代码:
def triangles():
row = [1]
while True:
yield row
row.append(0) # 补零以便于计算下一行数据
row = [row[i - 1] + row[i] for i in range(len(row))] # 通过本行相邻两个数据相加获得下一行的数据
if __name__ == '__main__':
t = triangles()
for i in range(6):
print(next(t))
结果:
[1]
[1, 1]
[1, 2, 1]
[1, 3, 3, 1]
[1, 4, 6, 4, 1]
[1, 5, 10, 10, 5, 1]
代码:
def triangles():
row = [1]
while True:
yield row
for i in range(1, len(row)):
row[i] = pre_line[i] + pre_line[i - 1] # 本行第 i 个元素为上一行的 i 元素与 i-1 元素相加
row.append(1) # 本行最后需要补元素 1
pre_line = row[:] # 复制本行, 用于计算下一行数据
if __name__ == '__main__':
t = triangles()
for i in range(6):
print(next(t))
结果:
[1]
[1, 1]
[1, 2, 1]
[1, 3, 3, 1]
[1, 4, 6, 4, 1]
[1, 5, 10, 10, 5, 1]
代码:
def triangles (line):
result = [[1]]
for row in range(1, line): # for 循环计算杨辉三角一共多少行
current_row = []
for column in range(row+1): # for 循环计算当前行一共多少个元素
if column == 0:
upper_former_param = 0 # 计算此行的第一个元素, 则它上一行的前一个元素为 0
else:
upper_former_param = result[row-1][column-1] # 获得此行元素在上一行的前一个元素
if column == len(result[row-1]):
upper_param = 0 # 计算此行的第一个元素, 则它上一行同样位置的元素为 0
else:
upper_param = result[row-1][column] # 获得此行元素在上一行同样位置的元素
param = upper_former_param + upper_param # 此行的元素为上一行同样位置及其前一个位置的和
current_row.append(param) # 将该元素添加到这一行
result.append(current_row) # 将这一行添加到结果中
return result
if __name__ == '__main__':
print(triangles(6))
结果:
[[1], [1, 1], [1, 2, 1], [1, 3, 3, 1], [1, 4, 6, 4, 1], [1, 5, 10, 10, 5, 1]]
今天的分享到此就结束了,感谢您的阅读,如果确实帮到您,您可以动动手指转发给其他人。