杨辉三角(也称帕斯卡三角)对与编程初学者来说,肯定不陌生,它是一个无限对称的数字金字塔,从顶部的单个1开始,下面一行中的每个数字都是上面两个数字的和。
杨辉三角,是二项式系数在三角形中的一种几何排列,在中国南宋数学家杨辉1261年所著的《详解九章算法》一书中出现。在欧洲,帕斯卡(1623—-1662)在1654年发现这一规律,所以这个表又叫做帕斯卡三角形。帕斯卡的发现比杨辉要迟393年,比贾宪迟600年。
那么什么是杨辉三角呢?
啥也不多说,
小二,上图!!!
虽然不同的编程语言对于杨辉三角的求解方式不一样,但是,求解思路大致相同.今天我们先来讨论python
初学者对杨辉三角的几种求解方法,等后期学习了更高级的函数,在进行补充.
知识储备需求:
python初学者,了解python中循环与列表基础知识.
方法一:基本法
#解释:将所有元素添加到一个列表中,最后一次打印出结果
num = 10
triangle= [1,[1,1]]
for i in range(2,num):
cur=[1] #定义新列表起始值cur --current
pre= triangle[i-1] #提取新行的前列所有元素待用
for j in range(i-1): #定义两两相加的界限,即取值最大为i-2
cur.append(pre[j]+pre[j+1])#依次迭代相加
cur.append(1) #尾部插入数字1,比用 insert 方法效率来的高,只是尾部追加,#不用每次插入都向后移动元素,因此insert法虽然可行禁用,效率太低,占据内存较多.
triangle.append(cur) #列表中插入新生成的列表
# cur=[1]
# for j in range(0,i-1):
# cur.append(triangle[i-1][j]+triangle[i-1][j+1])
# cur.append(1)
# triangle.append(cur)
# print(cur) #(比较注释行,两种方法结果相同,操作稍有变化,都是索引列表,还有就是打印时是一行打印还是)
print(triangle) #打印出结果
#优化代码打印,去除特例行:
num = 10
for i in range(num):
cur=[1] #定义新列表起始值cur --current
triangle.append(cur) #起始追加,列表存放索引地址,当后面进行cur.append()后,这里因为地址索引没变,但内部值发生了改变
if i ==0:
continue
pre= triangle[i-1] #提取新行的前列所有元素待用
for j in range(i-1): #定义两两相加的界限,即取值最大为i-2
cur.append(pre[j]+pre[j+1])<