python 详解杨辉三角
1.杨辉三角定义如下:
1
/ \
1 1
/ \ / \
1 2 1
/ \ / \ / \
1 3 3 1
/ \ / \ / \ / \
1 4 6 4 1
/ \ / \ / \ / \ / \
1 5 10 10 5 1
2.code:
def triangles(): N = [1] while True: yield N (1) N.append(0) (2) N = [N[i-1] + N[i] for i in range(len(N))] (3) n = 0 for t in triangles(): print(t) n = n + 1 if n == 10: break
主要讲一下代码中标注的(1)、(2)、(3)
(1).这是用到generator生成器,与普通函数不同是,生成器在执行yield时中断返回,执行下次时再从上次返回的yield进入,详细的用法这里就不进行阐述了,望读者自行查阅。
(2).给列表N进行元素拓展,循环执行一次时N=[1,0]。
(3).这是杨辉三角的关键算法,当执行第一次循环时range(len(N)) = [0,1], 所以此时N = [N[0-1] + N[0],N[1-1]+N[1+0]] = [N[-1]+N[0],N[0]+N[1]] = N[1,1]。
浙公网安备 33010602011771号