Python实现:杨辉三角思路


 杨辉三角有如下几个特色 :算法

  1. 每一个数等于它上方两数之和。
  2. 每行数字左右对称,由1开始逐渐变大。
  3. 第n行的数字有n项。
  4. 第n行数字和为2 n-1
  5. 第n行的m个数可表示为 C(n-1, m-1),即为从n-1个不一样元素中取m-1个元素的组合数。
  6. 第n行的第m个数和第n-m+1个数相等 ,为 组合数性质之一。
1
          1   1
        1   2   1
      1   3   3   1
    1   4   6   4   1
  1   5   10  10   5    1

    个人思路是因为第一行只有一个元素1,因此第二行也必定是1。因此重点在计算后面几行输出的数字,先把它输进列表。ui

由上图能够知道第三行 列表第一个元素[2 ] 是第2行列表第0个元素和第一个元素的和,由于第0个元素一直是1不用管它,因此有l[a]=l[a]+l[a+1],由上一行输出下一行,如今第三行spa

是[1,2],而后尾部加上一个[1],就能够获得第三行,列表长度也加了一个,依次类推第四行为[1,3,3],然后再加[1],输出第四行,代码实现以下code

1 def yanghui(n): 2     l=[1,1] 3     for x in range(1,n): 4         for a in range(x): 5             l[a]=l[a]+l[a+1] 6         l.insert(0,1) 7     return l

    后面将每一行按照格式输出便可,blog

再统一打印get



1 x=int(input()) 2 a=1
3 b=0 4 print((x-a+1)*' ',[1]) 5 while a<x: 6     b=yanghui(a) 7     print((x-a)*' ',b) 8     a+=1

比起须要用到生成器的算法更好理解,也有些取巧了,能够做为一种思路input

相关文章
相关标签/搜索