前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python|杨辉三角那点儿事

Python|杨辉三角那点儿事

作者头像
算法与编程之美
发布2020-06-19 14:54:03
7960
发布2020-06-19 14:54:03
举报
文章被收录于专栏:算法与编程之美

问题描述

杨辉三角大家并不陌生,从小学开始,就经常出现在找规律的题目中。

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展开的每一项系数。然后二次项展开系数公式就是数学中的公式.

系数展开公式:

知道公式后就很简单了,利用for循环,第几行i+1就等于几,当然python中是没有直接运算组合数的,这就需要自己分步计算。只需要写两个函数,一个是排列运算函数,一个是阶乘函数,具体代码如下。

代码示例:

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()

最总运行效果:

结语

条条大路通罗马,两种方法都可以打出杨辉三角,第一种是常见的,第二种就更需要一定数学知识了,相比第一种,个人更倾向于后者,毕竟,要学好编程,数学思维是必不可少的。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-06-17,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 算法与编程之美 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档