加[0]增加列表的元素数很精彩
Topic source#第y层的x个数可以用递归得出来
def t(y,x):
# 左边右边为1
if x <= 1 or x == y:
return 1
return t(y-1,x)+t(y-1,x-1)
## 厉害 易理解
```
n=1 1
n=2 [0,1] [1,0] 1,1
n=3 [0,1,1] [1,1,0] 1,2,1
n = m [0,m-1] [m-1,0] [0,m-1]+[m-1,0]
```
- 1
#第y层的x个数可以用递归得出来
def t(y,x):
# 左边右边为1
if x <= 1 or x == y:
return 1
return t(y-1,x)+t(y-1,x-1)
## 厉害 易理解
```
n=1 1
n=2 [0,1] [1,0] 1,1
n=3 [0,1,1] [1,1,0] 1,2,1
n = m [0,m-1] [m-1,0] [0,m-1]+[m-1,0]
```
小打小闹小情调123
我原本把焦点放在第i组的第j个元素怎么计算上,废了很大的功夫也没有进展,楼上+[0]扩充列表给了我思路,他的方法是:第n组的列表前后+[0],这样得到一个长度为i+2的列表,这个列表的相邻两个元素相加就是第i+1组列表的元素,这个方法也跟贴合杨辉三角的描述:每个数等于它上方两数之和。他的代码实现也是很漂亮的,不过作为新手的我写不出来这样的代码,拆分开来写需要一个空列表扩展i+1次。
由他启发想到一种计算方法,把第i组列表分表前后+[0],这样会形成2个长度为i+1的列表,这两个列表对应的元素相机即可。例如[1, 2, 1]前后分别+[0]为[0, 1, 2, 1]和[1, 2, 1, 0],这两个列表相加即为[1, 3, 3, 1]。
代码如下: