用Python输出一个杨辉三角的例子
关于杨辉三角是什么东西,右转维基百科:杨辉三角
稍微看一下直观一点的图:
1 11 121 1331 14641 15101051 1615201561 172135352171 18285670562881
杨辉三角有以下几个特点:
每一项的值等于他左上角的数和右上角的数的和,如果左上角或者右上角没有数字,就按0计算。
第N层项数总比N-1层多1个
计算第N层的杨辉三角,必须知道N-1层的数字,然后将相邻2项的数字相加,就能得到下一层除了最边上2个1的所有数字。听起来有点像递归的思想,我们不妨假设我们已经知道N-1层的数字,来计算一下N层的数字吧。
def_yanghui_trangle(n,result): ifn==1: return[1] else: return[sum(i)foriinzip([0]+result,result+[0])]
上面代码中,result表示N-1层杨辉三角的数字。实习上,我们在列表2端各补了一个0,然后计算相邻项的和,就可以直接得到结果。
稍微完善一下代码:
defyanghui_trangle(n): def_yanghui_trangle(n,result): ifn==1: return[1] else: return[sum(i)foriinzip([0]+result,result+[0])] pre_result=[] foriinxrange(n): pre_result=_yanghui_trangle(i+1,pre_result) yieldpre_result
if__name__=="__main__": forlineinyanghui_trangle1(5): printline