python实现杨辉三角形博客园_Python实现杨辉三角

杨辉三角,是二项式系数在三角形中的一种几何排列。在欧洲,这个表叫做帕斯卡三角形。帕斯卡(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,错位相加,从而实现了杨辉三角,解题者非常聪明,而我却很笨,看了很久才明白。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/503533.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ftm模块linux驱动,飞思卡尔k系列_ftm模块详解.doc

飞思卡尔k系列_ftm模块详解1.5FTM模块1.5.1 FTM模块简介FTM模块是一个多功能定时器模块,主要功能有,PWM输出、输入捕捉、输出比较、定时中断、脉冲加减计数、脉冲周期脉宽测量。在K10中,共有FTM0,FTM1,FTM2三个独立的F…

python列表切片图解_Python列表切片操作实例总结

本文实例讲述了Python列表切片操作。分享给大家供大家参考,具体如下:切片指的是列表的一部分。1 基本用法指定第一个元素和最后一个元素的索引,即可创建切片 。Python 会在到达指定的第二个索引之前元素后停止 。books[半生缘,往事并不如烟,心…

乱码 讯飞 语音识别_一段讯飞、百度等语音识别API无法识别的语音最终解决办法...

最近在做语音识别、字幕扒词相关的工作,遇到了一段录音(https://download.csdn.net/download/u014220286/12169183,各位有兴趣的可以下载下来试试),音质什么的和其他处理过的无二异,也是普通话,照常理说应该能识别出来…

linux docker查看容器状态,Docker容器状态命令行工具——Ctop

Ctop是和Linux top展示效果类似的一个容器状态监视工具,Ctop可以动态的显示容器的cpu、内存、网络的使用情况。一共有两个叫Ctop的命令行工具,分别由GO和Python实现。Python实现的版本功能更强大一些。GO实现版本安装Linux$ wget https://github.com/bci…

plsql表设置主键_对复制实施主键约束

作者:Pedro Gomes 译:徐轶韬在本文中,我们介绍一个配置选项,该选项控制复制通道是否允许创建没有主键的表。这延续了我们最近在复制安全性方面的工作,在该工作中,我们允许用户强制执行权限检查和/或强制执行…

用c语言编写名字用字母表示,如何用C语言编写自己的姓名和学号

可以参考下面的代码&#xff1a;#include<stdio.h>#include<stdlib.h>intmain(void){FILE*fpfopen("data.txt","r");if(!fp){fpfopen("data.txt","w");printf("请输入姓名:");char*name;scanf("%s",n…

天大c语言离线考核答案,【天大考核】2019年秋学期考试《公共关系学》离线作业考核试题答案100分...

【天大考核】答案100分奥鹏在线离线作业wx&#xff1a;zcjiaoyu1|QQ&#xff1a;2502533676|论文2019年秋学期考试《公共关系学》离线作业考核试题公共关系学要求&#xff1a;一、 独立完成&#xff0c;下面已将五组题目列出&#xff0c;请任选其中一组题目作答&#xff0c;每人…

一键刷入twrp_小米/红米手机到手了该怎么解锁和刷 twrp

资源准备&#xff1a;1.百度搜索小米解锁申请&#xff0c;进行申请解锁并下载解锁工具。如图。文件夹里有对应的驱动&#xff0c;要安装好。2.对应机型的 twrp。在 w大的微博下找(wzsx150)或者在酷安找或者去twrp官网。3.edxp相关的包(两个)(不需要框架的可以忽略)4.手(第一步&…

如何将计算思维融合到C语言程序设计中,浅析基于计算思维的C语言程序设计教学...

浅析基于计算思维的C语言程序设计教学摘要&#xff1a;C语言是关键词&#xff1a;计算思维;C语言;教学改革中图分类号&#xff1a;TP3 文献标识码&#xff1a;A文章编号&#xff1a;1009-3044(2020)16-0145-02C语言是计算机相关专业的必修基础课程&#xff0c;是学生接触的第一…

一直在构建工作空间_智能工作空间让Dropbox拥有无限扩展潜力

智能工作空间让Dropbox拥有无限扩展潜力Dropbox一直以“让工作变得更好”的使命。在竞争激烈的市场中&#xff0c;Dropbox有着卓越的历史&#xff0c;就连苹果创始人史蒂夫乔布斯曾经提出来要收购它。Dropbox的智能工作空间是一个开放的生态系统&#xff0c;由于其开放集成的特…

厦门大学2016年c语言程序设计,厦门大学c语言程序设计2016模拟题讲评及课程复习.pptx...

《C语言程序设计》课程复习及模拟题讲评;《C语言程序设计》试卷各类题目分数分布情况一、选择题 40分(20小题, 每题2分 ) 主要考核基本概念, 词法, 语法和小程序阅读等。二、阅读题 12分(2小题, 每题6分)三、改错题 12分(2小题, 每题6分)四、设计题 36分(4小题, 每题9分) ;启动…

黄金分割小数点后100位小数的c语言编程,黄金分割数小数点后100位

满意答案su304_3212013.03.25采纳率&#xff1a;57% 等级&#xff1a;12已帮助&#xff1a;10017人黄金分割奇妙之处&#xff0c;在于其比例与其倒数是一样的。例如&#xff1a;1.618的倒数是0.618&#xff0c;而1.618:1与1:0.618是一样的。确切值为根号51/2黄金分割数是无理…

去超市一定要存包吗_去东京一定要去的富士河口湖

第一次去河口湖是一个人&#xff5e;也没有留宿&#xff0c;但当时就想说一定要来这边住两天泡温泉&#xff0c;因为实在太&#xff01;美&#xff01;了&#xff01;因为下面这个预告所以就订了一栋小木屋&#xff0c;这是闺蜜先去日本前线发回的&#xff5e;立马改了酒店日期…

分析启动耗时 android,Android app启动耗时分析

首先编译你的程序&#xff0c;打开Android Studio里面的Android Monitor&#xff0c;找到下图的按钮&amp;amp;amp;amp;amp;amp;lt;img src"//bbsmax.ikafan.com/static/L3Byb3h5L2h0dHBzL3BpYzIuemhpbWcuY29tL3YyLTA4Zjk1ZmUxMjM5ODgwNTkzMDU5YjE3YzFlMGU5NjcxX2IucG5…

pytorch 对抗样本_《AI安全之对抗样本入门》—3.4 PyTorch

3.4 PyTorchPyTorch是torch的Python版本&#xff0c;是由Facebook开源的神经网络框架。PyTorch虽然是深度学习框架中的后起之秀&#xff0c;但是发展极其迅猛。PyTorch提供了NumPy风格的Tensor操作&#xff0c;熟悉NumPy操作的用户非常容易上手。我们以解决经典的手写数字识别…

包包的结构制图_15种常见领型的结构制图

原标题&#xff1a;15种常见领型的结构制图更多独家素材分享欢迎添加博主微信 Wlb109701来源 | 服装云教育整理编辑V领注意1、V形领的前开深&#xff0c;除夜礼服外&#xff0c;一般最深开到胸围线附近(胸围线以上3cm处)&#xff0c;如果继续开深&#xff0c;需添加挡胸。2、贴…

android+内存清理+代码,最新版本:Android一键式清理,内存清理功能的实现

Android一键式清理&#xff0c;内存清理功能的实山清理大师等均提供一键式清理和一键加速等功能。实际上&#xff0c;它们杀死了一些后台进程以达到释放内存的目的。基本思想是列出所有正在运行的进程&#xff0c;检查它们的重要值(RunningAppProcessInfo.importance&#xff0…

android xml通知栏权限配置,Android开发中 AndroidManifest.xml配置之service,receiver标签配置详解...

本文主要来分享service,receiver标签配置。如有错误&#xff0c;欢迎指正。android:directBootAware["true" | "false"]android:enabled["true" | "false"]android:exported["true" | "false"]android:foreground…

cups共享linux打印机_linux入门-映射网络驱动器

linux入门-映射网络驱动器在日常中&#xff0c;我们不会时时刻刻远程着linux服务器&#xff0c;那么有没有办法可以让我们在window电脑上映射linux的磁盘呢&#xff1f;这是可以实现的&#xff0c;这里我们就要介绍samba了。sambaSamba是在Linux和UNIX系统上实现SMB协议的一个免…

c++ idea 插件_idea快速开发插件

插件&#xff1a;1、Background Image Plus这款插件并不能直接提高你的开发效率&#xff0c;但是可以让你面对的IDE不再单调&#xff0c;当把背景设置成你自己心仪的的图片&#xff0c;是不是会感觉很赏心悦目&#xff0c;编码效率会不会因此间接的提高&#xff1f;&#xff01…