巧妙实现杨辉三角代码
def triangles():
N=[1] #初始化为[1],杨辉三角的每一行为一个list
while True:
yield N #yield 实现记录功能,没有下一个next将跳出循环,
S=N[:] #将list N赋给S,通过S计算每一行
S.append(0) #将list添加0,作为最后一个元素,长度增加1
N=[S[i-1]+S[i] for i in range(len(S))] #通过S来计算得出N n = 0
results = []
for t in triangles():
print(t)
results.append(t)
n = n + 1
if n == 10:
break
if results == [
[1],
[1, 1],
[1, 2, 1],
[1, 3, 3, 1],
[1, 4, 6, 4, 1],
[1, 5, 10, 10, 5, 1],
[1, 6, 15, 20, 15, 6, 1],
[1, 7, 21, 35, 35, 21, 7, 1],
[1, 8, 28, 56, 70, 56, 28, 8, 1],
[1, 9, 36, 84, 126, 126, 84, 36, 9, 1]
]:
print('测试通过!')
else:
print('测试失败!')
分析
N=[S[i-1]+S[i] for i in range(len(S))]
设上一个N为[1,1]
则S=[1,1,0]
通过式子可以得出
N=[1,2,1]