环境:
Windows 10 64-bit, python == 3.6.4 , PyCharm CE == 2018.1
声明:学习资源来自于网络,这里是自己学习笔记总结与分享,每篇内容会随着学习的深入进行更新,如发现问题请评论留言。由于网络重复资源比较多,原作者不明,均未给出链接,实现代码根据自己的理解会重新编写,若原作者看到此文,请留言,我将标记文中代码来源。
杨辉三角,是二项式系数在三角形中的一种几何排列,在中国南宋数学家杨辉1261年所著的《详解九章算法》一书中出现。在欧洲,帕斯卡(1623----1662)在1654年发现这一规律,所以这个表又叫做帕斯卡三角形。帕斯卡的发现比杨辉要迟393年,比贾宪迟600年。
用Python实现杨辉三角
杨辉三角的每一行可以看成一个列表,然后通过杨辉三角的规律不断计算出下一行的值,并输出此行列表。
具体实现如下,有详细注释:
- 方法1:
# 杨辉三角
# 定义一个生成器triangles()
def triangles():
L = [1] # 定义一个列表,杨辉三角第一行
while True:
yield L # 当遇到yield时,就输出列表L
L.append(0) # 在列表末尾增加一个元素0,用于计算下一行
L = [L[i - 1] + L[i] for i in range(len(L))] # 此为列表生成式,用于计算下一行
# len(L)列表的长度,也就是杨辉三角的第len(L)行
# range(len(L)) 用for循环挨个计算每一行的每一个元素
# L[i - 1] + L[i]计算的结果作为新行的元素
n = 0 # 计数作用,循环结束条件
for i in triangles():
print(i) # 打印出杨辉三角
n +=1
if n == 10: # 当打印10行时,结束.
break
下面是L = [L[i - 1] + L[i] for i in range(len(L))]
的详细计算过程:
初始 L = [1]
经过 L.append(0)
此时 L = [1,0], len(L) = 2 行数即为接下来准备计算杨辉三角的第二行
所以 L = [L[i - 1] + L[i] for i in range(2)]
这里是列表生成式的计,for 循环,当
i = 0, L[0-1] + L[0] = 1
i = 1, L[1-1] + L[1] = 1
所以L = [1, 1] 计算结果,即为杨辉三角的第二行
接下来进入下一个while循环,遇到yield L,则输入杨辉三角第二行
接下来准备计算第三方,重复以上。
- 方法2:
def method2():
pass # 占位