全国服务热线:400-6136-679

位置:兰州童程童美少儿编程培训学校 > 学校动态 > 兰州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杨辉三角的全部内容。

温馨提示:提交留言后老师会第一时间与您联系!热线电话:400-6136-679