位置:兰州童程童美少儿编程培训学校 > 学校动态 > 兰州Python杨辉三角
兰州Python杨辉三角
来源:兰州童程童美少儿编程培训学校时间:2022/1/7 15:05:26
杨辉三角,是一种像三角形一样的几何排列。在中国南宋数学家杨辉1261年所著的《详解九章算法》一书中出现。在欧洲,帕斯卡(1623----1662)在1654年发现这一规律,所以这个表又叫做帕斯卡三角形。帕斯卡的发现比杨辉要迟393年,比贾宪迟600年。
[代码运行结果]
[代码]
#算法一:递归
defpasica(n):
'''n代表三角的层号,从0开始'''
ifn==0:
return(1,)
else:
res=(1,)
foriinrange(n-1):
res+=(pasica(n-1)[i]+pasica(n-1)[i+1],)
res+=(1,)
returnres
#Testcode
#print(pasica(0))
#print(pasica(1))
#print(pasica(2))
#print(pasica(3))
#print(pasica(4))
#print(pasica(5))
#print(pasica(6))
#print(pasica(7))
#print(pasica(8))#开始卡
#print(pasica(9))#很慢了
#算法二:用闭包设计缓存机制
defpasica():
'''n代表三角的层号,从0开始'''
alldata=[(1,),(1,1)]#设计缓存
defpas(n):
lastestID=len(alldata)-1
ifn<=lastestID:
returnalldata[n]#由缓存提取数据
else:
foriinrange(n-lastestID):#需要在alldata里补充n-lastestID
tu=[]
lastLine=list(alldata[lastestID])
lastLine=[0]+lastLine+[0]
#print(lastLine,'='*10)
forj,dinenumerate(lastLine):
ifj+1
tu.append(d+lastLine[j+1])
alldata.append(tuple(tu))
lastestID=len(alldata)-1
returnalldata[n]
returnpas
fpas=pasica()
#Test
#print(fpas(0))
#print(fpas(1))
#print(fpas(2))
#print(fpas(3))
#print(fpas(4))
#print(fpas(5))
#print(fpas(6))
#print(fpas(7))
#print(fpas(8))
#print(fpas(9))
defseeOutput(n):
aa=fpas(n)
weight=len(str(max(aa)))+1
nline="".join(["{:<{w}}".format(e,w=weight)foreinaa])
alldata=[]
foriinrange(n+1):
aa=fpas(i)
iline="".join(["{:<{w}}".format(e,w=weight)foreinaa])
print("{:^{w}}".format(iline,w=len(nline)))
seeOutput(10)
print()
尊重原创文章,转载请注明出处与链接:http://www.peixun360.com/663/news/471572/违者必究!
以上就是兰州童程童美少儿编程培训学校 小编为您整理 兰州Python杨辉三角的全部内容。