【python】python实现杨辉三角的三种方法

news2024/11/28 19:49:12

文章目录

    • 1.杨辉三角介绍:
    • 2.方法一:迭代
    • 3.方法二:生成器
    • 4.方法三:递归

1.杨辉三角介绍:

杨辉三角是一种数学图形,由数字排列成类似三角形的形状。它的每个数值等于它上方两个数值之和。这个三角形的形状可以用一个二维表格来表示,其中每个位置上的数值都是通过前一行的数值计算得到的。在这个三角形中,第一行只有一个数值1,第二行有两个数值1,第三行有三个数值1,以此类推。从第四行开始,除了首尾的1之外,中间的数值是上一行对应位置的两个数值之和。 下面是一些杨辉三角常见的特点和应用:

  • 对称性:杨辉三角以中心轴为对称轴,每行的对称位置上的数值相等。
  • 组合数性质:杨辉三角中的数值可以表示为组合数,例如,第n行第k个数值表示为C(n-1, k-1),即从n-1个物体中选取k-1个的组合数。
  • 幂和性质:杨辉三角的每一行的数值之和都是2的幂,例如,第n行的数值之和为2^(n-1)。
  • 整数序列性质:杨辉三角的每一行对应着一个整数序列,如斐波那契数列、自然数序列等。

杨辉三角不仅仅是一个有趣的数学图形,还有许多实际应用。它在组合数学、概率论、代数等领域都有重要的应用,例如计算二项式的展开系数、解决概率分布问题、生成多项式系数等。
通过编程语言(如Python),可以实现杨辉三角并以可视化的方式显示出来。这样的程序可以逐行计算并输出杨辉三角的数值,从而更好地展示其规律和特点,并可用于相关计算和问题求解。
在这里插入图片描述

2.方法一:迭代

代码试例:

def triangle_1(x):
 """
 :param x: 需要生成的杨辉三角行数
 :return:
 """
 triangle = [[1], [1, 1]] # 初始化杨辉三角
 n = 3 # 从第三行开始计数,逐行添加
 while n <= x:
  for i in range(0, n-1):
   if i == 0:
    # 添加初始列表[1,1],杨辉三角每行的首位和末位必为1
    triangle.append([1, 1])
   else:
    # 逐位计算,并插入初始列表中
    triangle[n-1].insert(i, triangle[n - 2][i] + triangle[n - 2][i - 1])
  n += 1
 return triangle
x = 11
triangle = triangle_1(x)
  
# 遍历结果,逐行打印
for i in range(x):
 print(' '.join(str(triangle[i])).center(100)) # 转为str,居中显示

运行结果:
在这里插入图片描述

3.方法二:生成器

代码试例:

def triangle_2(n):
 """
 :param n: 需要生成的杨辉三角行数
 :return: 
 """
 triangle = [1] # 初始化杨辉三角
 for i in range(n):
  yield triangle
  triangle.append(0) # 在最后一位加个0,用于计算下一行
  triangle = [triangle[i] + triangle[i - 1] for i in range(len(triangle))]
# 从生成器取值
for i in triangle_2(10):
 print(''.join(str(i)).center(100)) # 格式化输出

运行结果:
在这里插入图片描述

4.方法三:递归

杨辉三角特性:

【1,1】=【0,1】+【1,0】
【1,2,1】=【0,1,1】+【1,1,0】
【1,3,3,1】=【0,1,2,1】+【1,2,1,0】
【1,4,6,4,1】=【0,1,3,3,1】+【1,3,3,1,0】
第n行等于第n-1行分别首尾补0,然后按位相加

试例代码:

def triangle_3(n):
 """
 :param n:需要生成的杨辉三角行数
 :return:
 """
 triangle = [1] # 初始化杨辉三角
 if n == 0:
  return triangle
 return [x+y for x, y in zip([0] + triangle_4(n - 1), triangle_4(n - 1) + [0])]
for i in range(10):
 print(''.join(str(triangle_4(i))).center(100))

运行结果:
在这里插入图片描述

到此这篇关于python实现杨辉三角的三种方法代码实例的文章就介绍到这了,如果本篇文章对你有帮助,记得点赞收藏+关注哦~

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

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

相关文章

【Linux】CentOS-6.8超详细安装教程

文章目录 1.CentOS介绍&#xff1a;2.必要准备&#xff1a;3.创建虚拟机&#xff1a;4 .安装系统 1.CentOS介绍&#xff1a; CentOS是一种基于开放源代码的Linux操作系统&#xff0c;它以其稳定性、安全性和可靠性而闻名&#xff0c;它有以下特点&#xff1a; 开源性&#xff1…

STM32F4X UCOSIII软件定时器

STM32F4X UCOSIII软件定时器 定时器概念 定时器在MCU中是一个很常用的外设&#xff0c;其作用是可以在某个事件点触发MCU中断&#xff0c;告知MCU处理事情。定时器跟生活中的闹钟很类似&#xff0c;可以设置闹钟每天什么时候响&#xff0c;还能设置响的次数&#xff0c;是响一…

山西电力市场日前价格预测【2023-10-01】

日前价格预测 预测说明&#xff1a; 如上图所示&#xff0c;预测明日&#xff08;2023-10-01&#xff09;山西电力市场全天平均日前电价为254.94元/MWh。其中&#xff0c;最高日前电价为399.30元/MWh&#xff0c;预计出现在19: 00。最低日前电价为0.00元/MWh&#xff0c;预计出…

源码编译安装systemtap

目录 编译环境 编译步骤 编译环境 阿里云ubuntu20.04 编译步骤 1 先安装elfutils&#xff0c;参见我的前一篇博客 源码编译elfutils_金色熊族的博客-CSDN博客 2 下载systemtap源码 3 解压 解压后的文件夹与elfutils的文件夹应该是平行的&#xff0c;如下图&#xff1a…

利用mAP计算yolo精确度

当将yolo算法移植部署在嵌入式设备上&#xff0c;为了验证算法的准确率。将模型测试的结果保存为txt文件&#xff08;每一个txt文件&#xff0c;对应一个图片&#xff09;。此外&#xff0c;需要将数据集中的标签由[x,y,w,h]转为[x1,y1,x2,y2]。最后&#xff0c;运行验证代码 …

轻松整理电脑文件:按大小归类保存,高效管理你的数据

你是否曾经在电脑中迷失在纷繁复杂的文件海洋中&#xff1f;你是否曾经花费大量时间搜索需要的文件&#xff0c;却发现它们并不在你想找的地方&#xff1f;如果你也遇到了这样的问题&#xff0c;那么是时候采取行动&#xff0c;对电脑文件进行整理和归类了。 首先。进入文件批…

问答区混赏金的集合贴

此贴专记录CSDN问答社区里面&#xff0c;一些回答者在临近结题时胡乱回答&#xff0c;只为分取结题赏金的人。 为了截图方便&#xff0c;给回答者点赞和点踩不是对其回答的认可和不认可&#xff0c;只是为了方便截图而已 文章目录 第一位——夜深人静的哝玛 (PS:与本人的头像和…

【CUDA编程概念】一、什么是bank conflict?

前言 搜了不少答案&#xff0c;大多是在避免Bank Conflict&#xff0c;很难找到一个关于Bank Conflict的详细定义&#xff0c;这里找了些资料来尝试解释下&#xff1b; 一、基础概念 先简单复习下相关概念 GPU调度执行流程&#xff1a; SM调度单位为一个warp&#xff08;一…

AI-FGNet降噪算法

上一篇文章介绍AI-CGNet降噪算法和AI-GruNet降噪算法&#xff0c;本篇文章介绍一个新的轻量级降噪做法AI-FGNet。 一、模型结构 AI-FGNet网络相比AI-GruNet&#xff0c;额外添加一层全连接实现特征的维度变换&#xff0c;作为频谱压缩、控制计算量的一种手段。此外&#xff0c…

Win11下无法打开丛林之狐,提示未检测到DirectX 8.1

新装的win11系统&#xff0c;打开丛林之狐提示未检测到DirectX 8.1. 运行dxdiag检查DirectX版本&#xff1a; DX版本已经是12了&#xff1a; 最终参考了这篇文章解决了&#xff1a; 罪恶都市出现XX-directx version 8.1处理方法 - 知乎 控制面板 > 程序 > 启用或关闭Wi…

(三) gitblit管理员手册

(一)gitblit安装教程 (二) gitblit用户使用教程 (三) gitblit管理员手册 目录 权限管理创建仓库时创建用户普通用户 管理员用户访问限制和访问权限仓库创建权限分配 Teams普通组管理员组 参考资料 权限管理 创建仓库时 选择指定的人员查看,克隆,推送 不允许fork 对应Anonymo…

9.30小任务

消息队列实现进程之间通信方式 实现了父子进程之间的通信 #include <myhead.h>//消息结构体 typedef struct {long msgtype; //消息类型char data[1024]; //消息正文 }Msg_ds;#define SIZE sizeof(Msg_ds)-sizeof(long) //正文大小int main(int arg…

从私服上拉取jar包,就是拉取不下来

明明私服上有jar包&#xff0c;但是就是拉取不下来&#xff0c;原因有很多种&#xff0c;我这里分享一种情况&#xff0c;我是因为idea的maven配置忘记改过来了&#xff0c;如下&#xff1a; 因为setting配置文件是拷贝来的&#xff0c;嫌麻烦&#xff0c;配置文件里的本地仓库…

10链表-单链表构造LinkedList

目录 LeetCode之路——707. 设计链表 分析&#xff1a; Code&#xff1a; LeetCode之路——707. 设计链表 你可以选择使用单链表或者双链表&#xff0c;设计并实现自己的链表。 单链表中的节点应该具备两个属性&#xff1a;val 和 next 。val 是当前节点的值&#xff0c;n…

如何写一份完整的职业规划书?

写职业规划书&#xff0c;确定今后几年的一个发展方向&#xff08;职业规划建议越早越好&#xff09;&#xff0c;帮助自己收获更大的成功。普通的职业规划书书写起来十分简单&#xff0c;没有想象中那样复杂&#xff0c;只需要包括基本的部分&#xff0c;就可以轻轻松松完成。…

Go-Ldap-Admin | openLDAP 同步钉钉、企业微信、飞书组织架构实践和部分小坑

目录 一、Docker-compose快速拉起demo测试环境 二、原生部署流程 安装MySQL&#xff1a;5.7数据库 安装openLDAP 修改域名&#xff0c;新增con.ldif 创建一个组织 安装OpenResty 下载后端 下载前端 部署后端 部署前端 三、管理动态字段 钉钉 企业微信 飞书 四、…

源码编译elfutils

编译环境 阿里云ubuntu20.04 编译步骤&#xff1a; 1 下载elfutils-0.170源码 2 解压 3 按照elfutils-0.170 (linuxfromscratch.org) 的描述&#xff0c;首先 ./configure --prefix/usr --program-prefix"eu-" 4 make 此时发生一个问题&#xff0c;报错&#x…

支付宝电脑网站支付,支付退款

一&#xff1a;支付宝退款 示例代码&#xff1a; AlipayClient alipayClient new DefaultAlipayClient("https://openapi.alipay.com/gateway.do","app_id","your private_key","json","GBK","alipay_public_key&qu…

CSS 选择器Day01

CSS 定义&#xff1a;层叠样式表(Cascading Style Sheets&#xff0c;缩写为 CSS)&#xff0c;是一种用于定义网页或文档的外观和样式的标记语言。 CSS是一种 样式表 语言&#xff0c;用来描述 HTML 文档的呈现 (美化内容)。它用于控制文本的字体、颜色、间距、布局、背景等各…

Java安全之servlet内存马分析

目录 前言 什么是中间键 了解jsp的本质 理解servlet运行机制 servlet的生命周期 Tomcat总体架构 查看Context 的源码 servlet内存马实现 参考 前言 php和jsp一句话马我想大家都知道&#xff0c;早先就听小伙伴说过一句话木马已经过时了&#xff0c;现在是内存马的天下…