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]。


posted on 2018-11-15 17:30  天道酬勤、  阅读(1120)  评论(0)    收藏  举报

导航