杨辉三角,是二项式系数在三角形中的一种几何排列。在欧洲,这个表叫做帕斯卡三角形。帕斯卡(1623----1662)是在1654年发现这一规律的,比杨辉要迟393年,比贾宪迟600年。杨辉三角是中国古代数学的杰出研究成果之一,它把二项式系数图形化,把组合数内在的一些代数性质直观地从图形中体现出来,是一种离散型的数与形的结合。 以下是杨辉三角的大概样子,n=5

昨天一直在看传智播客2018年的前端教程,昨天和今天也抽空研究了以下如何用Python实现杨辉三角。 杨辉三角有以下几点特性:

前提:每行端点与结尾的数为1.

每个数等于它上方两数之和。

每行数字左右对称,由1开始逐渐变大。

第n行的数字有n项。

第n行数字和为2n-1。

第n行的m个数可表示为 C(n-1,m-1),即为从n-1个不同元素中取m-1个元素的组合数。

第n行的第m个数和第n-m+1个数相等 ,为组合数性质之一。

每个数字等于上一行的左右两个数字之和。可用此性质写出整个杨辉三角。即第n+1行的第i个数等于第n行的第i-1个数和第i个数之和,这也是组合数的性质之一。即 C(n+1,i)=C(n,i)+C(n,i-1)。

(a+b)n的展开式中的各项系数依次对应杨辉三角的第(n+1)行中的每一项。

将第2n+1行第1个数,跟第2n+2行第3个数、第2n+3行第5个数……连成一线,这些数的和是第4n+1个斐波那契数;将第2n行第2个数(n>1),跟第2n-1行第4个数、第2n-2行第6个数……这些数之和是第4n-2个斐波那契数。

将各行数字相排列,可得11的n-1(n为行数)次方:1=11^0; 11=11^1; 121=11^2……当n>5时会不符合这一条性质,此时应把第n行的最右面的数字"1"放在个位,然后把左面的一个数字的个位对齐到十位... ...,以此类推,把空位用“0”补齐,然后把所有的数加起来,得到的数正好是11的n-1次方。以n=11为例,第十一行的数为:1,10,45,120,210,252,210,120,45,10,1,结果为 25937424601=1110。

本来无从下手,但是研究了一种Python解法终于实现:

def YangHui():

a = [1]

while True:

yield a

a = [sum(i) for i in zip([0] + a, a + [0])]

n = 0

for j in YangHui():

print(j)

n += 1

if n == 2:

break

下面,我来解释以下这段代码是什么意思: 首先,定义一个函数,然后定义一个列表,a = [1] 然后就是while循环,yield生成器就不多说了。下面的其实也不用多说,主要是这句话:

a = [sum(i) for i in zip([0] + a, a + [0])]

大家知道,sum是计算符号,而zip是打包列表的用法。但是我看了很久看不懂什么意思,直到我一步步推演:

a = [1]

a = [0,1]+[1,0] = [1,1]

a = [0,1,1]+[1,1,0]==[1,2,1]

a = [0,1,2,1]+[1,2,1,0]=[1,3,3,1]

a = [0,1,3,3,1]+[1,3,3,1,0]=[1,4,6,4,1]

这种解法非常巧妙,他利用zip打包两个数组,再利用2个0,错位相加,从而实现了杨辉三角,解题者非常聪明,而我却很笨,看了很久才明白。

pythonn阶杨辉三角_Python实现杨辉三角相关推荐

  1. python代码打印杨辉三角_python打印杨辉三角

    原博文 2020-03-24 18:03 − python打印杨辉三角 ```python def transfor(fun): # 定义一个转换函数, def war(N): # 带参数的装饰器,把 ...

  2. python杨辉三角函数_Python算法之六:杨辉三角

    关注微信公众号"酸痛鱼",获得更多最新最全的文章. 本文中所涉及的代码,在未特殊声明的情况下,都是基于Python3程序设计语言编写的. 建议您在PC浏览器中阅读本文,以获得更好的 ...

  3. python实现杨辉三角_Python算法之六:杨辉三角

    关注微信公众号"酸痛鱼",获得更多最新最全的文章. 本文中所涉及的代码,在未特殊声明的情况下,都是基于Python3程序设计语言编写的. 建议您在PC浏览器中阅读本文,以获得更好的 ...

  4. 杨辉三角与倒置杨辉三角

    杨辉三角问题: 杨辉三角是按照一定规律排列而成的数字.在这里我们可以用程序来进行输出,比较容易. 首先用C语言说明问题代码,在本文章最后有C++的代码供参考. 杨辉三角的形式为: * ** * 实际上 ...

  5. 锐角三角函数用计算机怎么算,用计算器求锐角三角函数值和由锐角三角函数值求锐角.doc...

    文档介绍: 一素质教育目标(一)知识教学点1.会用计算器求出一个数的平方.平方根.立方.立方根.2.会用计算器求锐角三角函数值和由锐角三角函数值求锐角.(二)能力训学点:培养学生熟练地使用现代化辅助计 ...

  6. 用计算机怎么求锐角三角函数值,用计算器求锐角三角函数值与由锐角三角函数值求锐角.doc...

    用计算器求锐角三角函数值与由锐角三角函数值求锐角 用计算器求锐角三角函数值和由锐角三角函数值求锐角 一 素质教育目标 (一)知识教学点 1.会用计算器求出一个数的平方.平方根.立方.立方根. 2.会用 ...

  7. python杨辉三角居中_python打印杨辉三角的两种方法及详解

    艾斯压阵 1c950a7b02087bf4200394cdf1d3572c11dfcf23.jpg 一盏灯, 一片昏黄: 一简书, 一杯淡茶. 守着那一份淡定, 品读属于自己的寂寞. 保持淡定, 才能 ...

  8. python生成器杨辉三角_python 生成器生成杨辉三角的方法(必看)

    用Python写趣味程序感觉屌屌的,停不下来 #生成器生成展示杨辉三角 #原理是在一个2维数组里展示杨辉三角,空的地方用0,输出时,转化为' ' def yang(line): n,leng=0,2* ...

  9. python每行输出5个数_python打印杨辉三角及输出第m行第k个数

    1.打印杨辉三角及输出第m行第k个数 1.计算到m行,打印出k项 第m行有m项,m是正整数,因此k一定不会大于m,这个需求需要保存m行的数据,那么可以使用一个嵌套结构[[],[],[]] m=int( ...

最新文章

  1. 19个决定性时刻,2030年前,这些黑科技必将发生
  2. react-native 单位换算(px,pt,dp,ppi)
  3. 两个人投票的c语言程序,设计网页投票器(二)《精通Unix下C语言编程与项目实践》之十...
  4. matlab的数学函数,matlab中常见数学函数的使用
  5. google 插件_google这4款插件我每天都用,省时无数
  6. Android 渗透测试学习手册 第七章 不太知名的 Android 漏洞
  7. 谷歌修复已遭利用的 Chrome 0day
  8. mysql 命令 字符集_MySQL的字符集操作命令总结
  9. 《数据挖掘:理论与算法》习题 + 期末考试+答案 + 2021年【完整/完结】
  10. 基于STM32简易计算器
  11. 【OFDM通信】基于块状导频的信道估计算法仿真含Matlab源码
  12. 走进“开源SDR实验室” 一起玩转4G/5G开源项目srsRAN(srsLTE升级版):安装方法+NB-IoT测试
  13. 利用Pano2VR在全景图中添加视频,音频,图片
  14. PageHelper分页pageSize和total异常问题
  15. 一次蜿蜒曲折的RFID破解之路
  16. 强化学习中 on-policy与off-policy 的理解;如何区分on-policy 与 off-policy;RL更新策略、policy结构总结
  17. 20952磁盘存储器的管理
  18. python基础教程:face++与python实现人脸识别签到(考勤)功能
  19. md5等hash算法加密解密问题
  20. ABAP-01 SAP基础

热门文章

  1. c语言学生成绩管理系统框架
  2. 武装突袭3服务器修改数据,武装突袭3数据修改 | 手游网游页游攻略大全
  3. SDE的概念、结构、功能及应用
  4. 一封传话一对多推送实现步骤
  5. MIT Mini Cheetah开源四足机器人仿真环境20211130
  6. 手机蓝牙小车,教你DIY自己的玩具——硬件篇
  7. python 调用cplex-学术版
  8. vi设计中产品与包装类设计
  9. Java集合TreeMap--LOL有哪些拿剑英雄案例
  10. er图 navicat_navicat如何导出er图