当前位置: 首页 > 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…...

AI-调查研究-01-正念冥想有用吗?对健康的影响及科学指南

点一下关注吧&#xff01;&#xff01;&#xff01;非常感谢&#xff01;&#xff01;持续更新&#xff01;&#xff01;&#xff01; &#x1f680; AI篇持续更新中&#xff01;&#xff08;长期更新&#xff09; 目前2025年06月05日更新到&#xff1a; AI炼丹日志-28 - Aud…...

java_网络服务相关_gateway_nacos_feign区别联系

1. spring-cloud-starter-gateway 作用&#xff1a;作为微服务架构的网关&#xff0c;统一入口&#xff0c;处理所有外部请求。 核心能力&#xff1a; 路由转发&#xff08;基于路径、服务名等&#xff09;过滤器&#xff08;鉴权、限流、日志、Header 处理&#xff09;支持负…...

3.3.1_1 检错编码(奇偶校验码)

从这节课开始&#xff0c;我们会探讨数据链路层的差错控制功能&#xff0c;差错控制功能的主要目标是要发现并且解决一个帧内部的位错误&#xff0c;我们需要使用特殊的编码技术去发现帧内部的位错误&#xff0c;当我们发现位错误之后&#xff0c;通常来说有两种解决方案。第一…...

将对透视变换后的图像使用Otsu进行阈值化,来分离黑色和白色像素。这句话中的Otsu是什么意思?

Otsu 是一种自动阈值化方法&#xff0c;用于将图像分割为前景和背景。它通过最小化图像的类内方差或等价地最大化类间方差来选择最佳阈值。这种方法特别适用于图像的二值化处理&#xff0c;能够自动确定一个阈值&#xff0c;将图像中的像素分为黑色和白色两类。 Otsu 方法的原…...

spring:实例工厂方法获取bean

spring处理使用静态工厂方法获取bean实例&#xff0c;也可以通过实例工厂方法获取bean实例。 实例工厂方法步骤如下&#xff1a; 定义实例工厂类&#xff08;Java代码&#xff09;&#xff0c;定义实例工厂&#xff08;xml&#xff09;&#xff0c;定义调用实例工厂&#xff…...

Maven 概述、安装、配置、仓库、私服详解

目录 1、Maven 概述 1.1 Maven 的定义 1.2 Maven 解决的问题 1.3 Maven 的核心特性与优势 2、Maven 安装 2.1 下载 Maven 2.2 安装配置 Maven 2.3 测试安装 2.4 修改 Maven 本地仓库的默认路径 3、Maven 配置 3.1 配置本地仓库 3.2 配置 JDK 3.3 IDEA 配置本地 Ma…...

JAVA后端开发——多租户

数据隔离是多租户系统中的核心概念&#xff0c;确保一个租户&#xff08;在这个系统中可能是一个公司或一个独立的客户&#xff09;的数据对其他租户是不可见的。在 RuoYi 框架&#xff08;您当前项目所使用的基础框架&#xff09;中&#xff0c;这通常是通过在数据表中增加一个…...

安宝特案例丨Vuzix AR智能眼镜集成专业软件,助力卢森堡医院药房转型,赢得辉瑞创新奖

在Vuzix M400 AR智能眼镜的助力下&#xff0c;卢森堡罗伯特舒曼医院&#xff08;the Robert Schuman Hospitals, HRS&#xff09;凭借在无菌制剂生产流程中引入增强现实技术&#xff08;AR&#xff09;创新项目&#xff0c;荣获了2024年6月7日由卢森堡医院药剂师协会&#xff0…...

Java求职者面试指南:计算机基础与源码原理深度解析

Java求职者面试指南&#xff1a;计算机基础与源码原理深度解析 第一轮提问&#xff1a;基础概念问题 1. 请解释什么是进程和线程的区别&#xff1f; 面试官&#xff1a;进程是程序的一次执行过程&#xff0c;是系统进行资源分配和调度的基本单位&#xff1b;而线程是进程中的…...

在Mathematica中实现Newton-Raphson迭代的收敛时间算法(一般三次多项式)

考察一般的三次多项式&#xff0c;以r为参数&#xff1a; p[z_, r_] : z^3 (r - 1) z - r; roots[r_] : z /. Solve[p[z, r] 0, z]&#xff1b; 此多项式的根为&#xff1a; 尽管看起来这个多项式是特殊的&#xff0c;其实一般的三次多项式都是可以通过线性变换化为这个形式…...