当前位置: 首页 > news >正文

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

文章目录

    • 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],杨辉三角每行的首位和末位必为1triangle.append([1, 1])else:# 逐位计算,并插入初始列表中triangle[n-1].insert(i, triangle[n - 2][i] + triangle[n - 2][i - 1])n += 1return 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 triangletriangle.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 trianglereturn [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实现杨辉三角的三种方法代码实例的文章就介绍到这了,如果本篇文章对你有帮助,记得点赞收藏+关注哦~

相关文章:

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

文章目录 1.杨辉三角介绍&#xff1a;2.方法一&#xff1a;迭代3.方法二&#xff1a;生成器4.方法三&#xff1a;递归 1.杨辉三角介绍&#xff1a; 杨辉三角是一种数学图形&#xff0c;由数字排列成类似三角形的形状。它的每个数值等于它上方两个数值之和。这个三角形的形状可以…...

GitHub 基本操作

最近要发展一下自己的 github 账号了&#xff0c;把以前的项目代码规整规整上传上去&#xff0c;这里总结了一些经验&#xff0c;经过数次实践之后&#xff0c;已解决几乎所有基本操作中的bug&#xff0c;根据下面的操作步骤来&#xff0c;绝对没错了。&#xff08;若有其他问题…...

Docker和Docker compose的安装使用指南

一&#xff0c;环境准备 Docker运行需要依赖jdk&#xff0c;所以需要先安装一下jdk yum install -y java-1.8.0-openjdk.x86_64 二&#xff0c;Docker安装和验证 1&#xff0c;安装依赖工具 yum install -y yum-utils 2&#xff0c;设置远程仓库 yum-config-manager --add-r…...

51单片机控制电动机正反转,PWM调速,记录转动圈数。

今天的实验需要用到的材料有&#xff1a;51单片机最小系统&#xff0c;4X4的矩阵键盘&#xff0c;DC直流6V-12V带编码器电机&#xff0c;L298N模块&#xff0c;一个led小灯。下面把产品截图展示一下&#xff1a; 单片机就不展示了&#xff0c;都一样&#xff0c;下面是接线图&a…...

JAVA学习(方法的定义和调用)

一、方法的定义和调用 1、关键词&#xff1a;static表示静态方法&#xff0c;如没有返回值使用void&#xff0c;方法名前使用类型&#xff0c;例如int、float等&#xff1b; /*** 测试方法的定义和调用*/public class TestMethod {public static void main(String[] args) {a…...

Linux(CentOS/Ubuntu)——安装nginx

如果确定你的系统是基于CentOS或RHEL&#xff0c;可以使用以下命令&#xff1a; ①、安装库文件 #安装gcc yum install gcc-c#安装PCRE pcre-devel yum install -y pcre pcre-devel#安装zlib yum install -y zlib zlib-devel#安装Open SSL yum install -y openssl openssl-de…...

26962-2011 高频电磁场综合水处理器技术条件

声明 本文是学习GB-T 26962-2011 高频电磁场综合水处理器技术条件. 而整理的学习笔记,分享出来希望更多人受益,如果存在侵权请及时联系我们 1 范围 本标准规定了高频电磁场综合水处理器(以下简称处理器)的术语和定义、分类和型号、结构型式、 要求及检验、标志、包装和贮运…...

图扑软件受邀亮相 IOTE 2023 国际物联网展

IOTE 2023 国际物联网展&#xff0c;作为全球物联网领域的盛会&#xff0c;于 9 月 20 日 - 22 日在中国深圳拉开帷幕。本届展会以“IoT构建数字经济底座”为主题&#xff0c;由深圳市物联网产业协会主办&#xff0c;打造当前物联网最新科技大秀。促进物联网与各行业深度融合&a…...

C语言文件操作与管理

一、为什么使用文件 在我们前面练习使用结构体时&#xff0c;写通讯录的程序&#xff0c;当通讯录运行起来的时候&#xff0c;可以给通讯录中增加、删除数据&#xff0c;此时数据是存放在内存中&#xff0c;当程序退出的时候&#xff0c;通讯录中的数据自然就不存在了&#xff…...

蓝桥等考Python组别八级005

第一部分&#xff1a;选择题 1、Python L8 &#xff08;15分&#xff09; 运行下面程序&#xff0c;输出的结果是&#xff08; &#xff09;。 i 1 while i < 4: print(i, end ) i 1 1 2 30 1 2 31 2 3 40 1 2 3 4 正确答案&#xff1a;C 2、Python L8 &#…...

JUnit介绍

JUnit是用于编写和运行可重复的自动化测试的开源测试框架&#xff0c; 这样可以保证我们的代码按预期工作。JUnit可广泛用于工业和作为支架(从命令行)或IDE(如Eclipse)内单独的Java程序。 JUnit提供&#xff1a; 断言测试预期结果。 测试功能共享通用的测试数据。 测试套件轻…...

(高阶) Redis 7 第16讲 预热/雪崩/击穿/穿透 缓存篇

面试题 什么是缓存预热/雪崩/击穿/穿透如何做缓存预热如何避免或减少缓存雪崩穿透和击穿的区别?穿透和击穿的解决方案出现缓存不一致时,有哪些修补方案缓存预热 理论 将需要的数据提前加载到缓存中,不需要用户使用的过程中进行数据回写。(比如秒杀活动数据等) 方案 1.…...

(三) gitblit管理员手册

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

ESKF算法融合GNSS与IMU信息,航向角的偏差是如何逐渐影响到重力加速度g以及位置偏差的 CSDN gpt

1##############################ESKF算法融合GNSS与IMU信息,航向角的偏差是如何逐渐影响到重力加速度g以及位置偏差的 CSDN gpt 航向角的偏差会逐渐影响重力加速度和位置偏差。首先&#xff0c;航向角的偏差会影响重力加速度的测量值。在ESKF算法中&#xff0c;通过将IMU测…...

Java初始化大量数据到Neo4j中(二)

接Java初始化大量数据到Neo4j中(一)继续探索&#xff0c;之前用create命令导入大量数据发现太过耗时&#xff0c;查阅资料说大量数据初始化到Neo4j需要使用neo4j-admin import 业务数据说明可以参加Java初始化大量数据到Neo4j中(一)&#xff0c;这里主要是将处理好的节点数据和…...

flink1.17安装

Flink1.17安装 官网地址&#xff1a; https://nightlies.apache.org/flink/flink-docs-release-1.17/zh//docs/try-flink/local_installation/ 安装jdk11 ps&#xff1a;只能安装openjdk11&#xff0c;昨天安装的oracle jdk17&#xff0c;结果怎么也运行不起来。 sudo apt …...

SLAM从入门到精通(gmapping建图)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 前面我们介绍了hector slam建图。相对而言&#xff0c;hector slam建图对数据的要求比较低&#xff0c;只需要lidar数据就可以建图了。但是hector …...

中国312个历史文化名镇及景区空间点位数据集

一部中华史&#xff0c;既是人类创造丰富物质财富的奋头史&#xff0c;又是与自然共生共存的和谐史不仅留存下悠久丰富的人文思想和情怀&#xff0c;还在各处镌刻下可流传的生活场景&#xff0c;历史文化名镇(以下简称:名镇)就是这样真实的历史画卷。“镇”是一方的政治文化中心…...

记一次Mybatis驼峰命名导致的线上BUG及处理方案

前言 方向从一开始就错了&#xff0c;还是执着的去寻找问题的解决方案&#xff0c;简直就是一场重大灾难&#xff0c;但这也是每个修行者的必由之路。这个线上问题&#xff0c;差点让我的心里防线崩溃&#xff0c;苦寻无门&#xff0c;最终得以解决也多亏了身边的各路大佬的群…...

在MyBatisPlus中添加分页插件

开发过程中&#xff0c;数据量大的时候&#xff0c;查询效率会有所下降&#xff0c;这时&#xff0c;我们往往会使用分页。 具体操作入下&#xff1a; 1、添加分页插件&#xff1a; package com.zhang.config;import com.baomidou.mybatisplus.extension.plugins.Pagination…...

算法题系列8·买卖股票的最佳时机

目录 题目描述 实现 提交结果 题目描述 给定一个数组 prices &#xff0c;它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。 你只能选择 某一天 买入这只股票&#xff0c;并选择在 未来的某一个不同的日子 卖出该股票。 设计一个算法来计算你所能获取的最大利润。…...

DC电源模块关于宽电压输入和输出的范围

BOSHIDA DC电源模块关于宽电压输入和输出的范围 DC电源模块是一种电子设备&#xff0c;能够将输入的直流电源转换成所需的输出电源&#xff0c;用于供电各种电子设备。其中&#xff0c;关于宽电压输入和输出的范围&#xff0c;是DC电源模块常见的设计要求之一。本文将详细介绍…...

【Docker】docker拉取镜像错误 missing signature key

问题 当我使用docker拉取一个特定的镜像时&#xff0c;提示错误&#xff1a; 错误 missing signature key 但是拉取其他镜像又可以访问&#xff0c;&#xff0c;&#xff0c;&#xff0c;于是&#xff0c;我怀疑是否是docker版本问题。 docker --version结果确实&#xff0…...

C- 静态链接

静态链接意味着在编译时将所有库函数直接嵌入到最终的可执行文件中&#xff0c;而不是在运行时通过共享库来动态链接这些函数。静态链接的结果是一个更大的可执行文件&#xff0c;因为它包含了所有必要的代码&#xff0c;但它可以在没有外部依赖的情况下独立运行。 下面是一个…...

微信公众号开发(BUG集)

1.微信公众平台接口错误:不合法的自定义菜单使用用户 地址&#xff1a;解决地址 2.微信公众平台接口错误:invalid ip 180.101.72.196 ipv6 ::ffff:180.101.72.196, not in whitelist rid: 6511420b-60c59249-01084d02 白名单离开放服务器IP...

AI项目十三:PaddleOCR训练自定义数据集

若该文为原创文章&#xff0c;转载请注明原文出处。 续上一篇&#xff0c;PaddleOCR环境搭建好了&#xff0c;并测试通过&#xff0c;接下来训练自己的检测模型和识别模型。 paddleocr检测模型训练 1、准备数据集 在PaddleOCR目录下新建文件夹&#xff1a;train_data, 这个…...

你熟悉Docker吗?

你熟悉Docker吗&#xff1f; 文章目录 你熟悉Docker吗&#xff1f;快速入门Docker安装1.卸载旧版2.配置Docker的yum库3.安装Docker4.启动和校验5.配置镜像加速5.1.注册阿里云账号5.2.开通镜像服务5.3.配置镜像加速 部署MySQL镜像和容器命令解读 Docker基础常用命令数据卷数据卷…...

Nodejs错误处理详细指南

Nodejs错误处理详细指南 学习 Node.js 中的高级错误处理技术&#xff0c;以增强应用程序的可靠性和稳定性。 在 Node.js 中&#xff0c;我们可以使用各种技术和方法来处理错误&#xff0c;可以查看这篇文章。错误处理是任何 Node.js 应用程序的一个重要方面。正确管理错误可以…...

软考 系统架构设计师系列知识点之软件架构风格

这个十一注定是一个不能放松、保持“紧”的十一。由于报名了全国计算机技术与软件专业技术资格&#xff08;水平&#xff09;考试&#xff0c;11月4号就要考试&#xff0c;因此8天长假绝不能荒废&#xff0c;必须要好好利用起来。现在将各个核心知识点一一进行提炼并做记录。 所…...

一键智能视频语音转文本——基于PaddlePaddle语音识别与Python轻松提取视频语音并生成文案

前言 如今进行入自媒体行业的人越来越多&#xff0c;短视频也逐渐成为了主流&#xff0c;但好多时候是想如何把视频里面的语音转成文字&#xff0c;比如&#xff0c;录制会议视频后&#xff0c;做会议纪要&#xff1b;比如&#xff0c;网课教程视频&#xff0c;想要做笔记&…...

vps设置网站访问用户权限/网络广告投放网站

为什么80%的码农都做不了架构师&#xff1f;>>> 首先登录oracle&#xff0c;进入jdk8下载页面&#xff1a; http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html 找到需要下载得版本&#xff0c;并获取下载链接地址&#xff1a;…...

想通过做威客网站上的任务来赚/互联网销售公司

类模板 //类模板和函数模板区别://1、类模板不可以使用自动类型推导,只能用显示指定类型//2、类模板中 可以有默认参数#define _CRT_SECURE_NO_WARNINGS #include<iostream> using namespace std; #include <string> template<class...

自己做的网站如何赚钱/四川seo优化

Redis哨兵机制&#xff0c;一主二从注&#xff1a;Redis哨兵切换&#xff0c;建议一主多从一、一主二从二、哨兵配置(sentinel.conf)cd /usr/local/redis-ms/1.创建哨兵目录mkdir -p ./sentinel/26001/tmpcp /usr/local/redis/sentinel.conf ./sentinel/26001/2.修改./sentinel…...

墨刀做网站/近期网络舆情事件热点分析

jQuery(三) javascript跨域问题(JSONP解决)参考文章&#xff1a; &#xff08;1&#xff09;jQuery(三) javascript跨域问题(JSONP解决) &#xff08;2&#xff09;https://www.cnblogs.com/whgk/p/7102625.html 备忘一下。...

优秀购物网站/百度搜索引擎优化详解

Hadoop2.7伪分布式搭建 软件版本&#xff1a; 系统&#xff1a;CentOS 7 64位 jdk&#xff1a;1.8.0_181 hadoop&#xff1a;hadoop 2.7.2 环境准备&#xff1a; 1.安装Java环境&#xff08;省略&#xff09; 2. 创建用户&#xff08;work&#xff09;&#xff1a; root用户…...

泰安网站开发/怎样优化标题关键词

vsftpd简介vsftpd是一款在Linux发行版中最受推崇的FTP服务器程序&#xff1b;特点是小巧轻快&#xff0c;安全易用&#xff1b;能让其自身特点得发挥和掌握&#xff0c;也然最主要的是会用&#xff1b;目前在开源操作系统中常用的FTPD套件主要有ProFTPD、PureFTPd和wuftpd等&am…...