问题描述
杨辉三角大家并不陌生,从小学开始,就经常出现在找规律的题目中。
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
................
它的每一个数等于它两肩上的和,这个性质是最为熟悉不过的了,由此可以利用python打出杨辉三角。
代码示例:
def triangles(n): L = [1] for m in range(n): yield L L = L[:1] + [L[i]+L[i+1] for i in range(len(L)-1)] + L[-1:] n = int(input()) l = triangles(n) for i in l: for m in i: print(m,end=' ') print() |
除了以此性质外,还有学习过高中数学的就知道,与它最密切相连的是二次项定理。所以接下来需要做的是用二次项定理打出杨辉三角。
解决方案
首先要知道杨辉三角与二次项定理的关系。就是杨辉三角的第i+1行是(a+b)i展开的每一项系数。然后二次项展开系数公式就是数学中的公式.
系数展开公式:
def jiang(x): if x == 0: return 1 else: return x*jiang(x-1) def jiang1(n,x): sum = 1 for i in range(x): sum *= n n -= 1 return sum def jiang2(n,x): return jiang1(n,x)//jiang(x) floor = int(input()) for n in range(floor): for x in range(n+1): print(jiang2(n,x),end=' ') print() |
最总运行效果: