首页 编程语言 杨辉三角原理及PHP代码实现

杨辉三角原理及PHP代码实现

杨辉三角,又称帕斯卡三角,是我国南宋数学家杨辉在1261年所著的《详解九章算法》中首次记录的一种三角形数表,在欧洲则称为帕斯卡三角(Blaise Pascal,1653年研究)。它是一个无限对称的数字金字塔

研究规则设定:

杨辉三角构造规则
杨辉三角是一个由数字排列成的三角形数表,其构造规则非常简单:

顶端数字:第 0 行只有一个数字 1。
边界数字:从第1行开始,每一行的最左边和最右边的数字都是 1。
中间数字:除了边界外,中间的每一个数字都等于它正上方和左上方两个数字之和。
用数学公式表示:
规则设定:行 n 从 0 开始计数,列 k 也从 0 开始计数。

如果设 C(n,k) 为第 n 行第 k 列的数字(行和列都从 0 开始计数,且 n ≥),则:
C(n,k) = C(n-1, k-1) + C(n-1, k)
另外,每行首尾的数为:C(n,0) =1且 C(n,n)=1。

通过分析,我得出的的几个关键特点:
n代表第n行(n从0开始计数),k代表第k列(k从0开始计数)。
第 0 行:有1个数,1。
第 1 行:有2个数,1、1。
第 2 行:有3个数,1、2、1。
第 n 行:有n+1个数,第n+1个数的索引值是n,第n个数的索引值是n-1。

n 必须满足的条件是:n ≥ 2。因为只当行数n ≥ 2时,才存在中间元素。
k 必须满足的条件是:k ≥ 1 && k ≤ n-1,也就是说,让k定位到每一行不是首尾的数。

代码逻辑解析:

初始化:我们创建一个空数组 $triangle 来存储整个三角形。
外层循环:遍历每一行(从 0 到 $numRows - 1)。
行初始化:对于第 $i 行,我们创建一个长度为 $i + 1 的数组,并全部填充为 1。这一步巧妙地利用了杨辉三角“两端为 1”的特性,省去了单独判断首尾的代码。
内层循环:从第 2 行(索引为 2)开始,遍历该行中间的元素(索引从 1 到 $i - 1)。
状态转移:利用公式 $row[$j] = $triangle[$i - 1][$j - 1] + $triangle[$i - 1][$j] 计算当前值。这里 $triangle[$i - 1] 代表上一行。
存储:将构建好的行添加到 $triangle 数组中。
用 PHP 实现的杨辉三角算法
<?php
declare (strict_types = 1);

/**
* 生成杨辉三角
* 采用“先填充默认值 1,再计算中间值”的策略。
* @param int $numRows 需要生成的行数。
* @return array 返回一个二维数组。
*/

function generateYangHuiTriangle(int $numRows): array {
// 防御性编程:处理非正数输入
if ($numRows <= 0) {
return [];
}

$triangle = [];

for ($i = 0; $i < $numRows; $i++) {
// 首先把每一行的值全部初始化为 1。
$row = array_fill(0, $i + 1, 1);

// 计算中间值。只有当 i ≥ 2 时,才存在中间元素(索引 j ≥ 1 && j ≤ i-1)。
for ($j = 1; $j < $i; $j++) {
$row[$j] = $triangle[$i - 1][$j - 1] + $triangle[$i - 1][$j];
}

$triangle[] = $row;
}

return $triangle;
}

// print_r(generateYangHuiTriangle(5));

$rows = 5;

// 格式化输出杨辉三角
echo "<h3>杨辉三角({$rows}行)</h3>";

$triangle = generateYangHuiTriangle($rows);
foreach ($triangle as $line) {
echo str_repeat("&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;", $rows - count($line));
echo implode("&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;", $line) . "<br>";
}

站星网

杨辉三角,又称帕斯卡三角,是我国南宋数学家杨辉在1261年所著的《详解九章算法》中首次记录的一种三角形数..

为您推荐

关于代码注释的思考

序言晚上我坐在马桶上,不知为何脑子闪过一个关于代码注释的问题:写代码应该追求代码的自注释还是开发自己写注释?刚开始工作的时候,看了很多关于代码规范的文档或书籍,把上面的言论奉为金科玉律,深信不疑,可是..

《一个程序猿的生命周期》-《发展篇》- 49.从写代码、到开发软件产品、再到开拓前端市场,2025年是转型关键的一年

已然工作了19个年头,从2006年毕业,干了1年设备安装及维护的工作(2006年~2007年),尽管当时很辛苦,但是奠定了现在做事的品格与韧性;干了18年(2007年~2025年)的软件开发、项目实施及管理团队相关工作,期间出..

代码管理平台全景解析:从新手到企业级开发的最佳实践

在数字化转型浪潮中,代码管理工具已成为开发者必备的"生产工具"。无论是个人开发者还是企业团队,选择合适的代码管理平台不仅能提升开发效率,更能为项目协作与代码安全保驾护航。本文将深入剖析Gitee、Git、GitHub..

代码照进现实:对公司管理策略的技术性解构

上学的时候觉得计算机专业的一些理论晦涩难懂,跟现实世界的关联太少,每当遇到一些精妙的设计时都会发出一种感叹:究竟是什么脑袋才能想出这么有意思的东西。一晃工作十年,阅历渐丰,隐约发现其实社会中的一些现象..

编写优秀 CSS 代码的 8 个策略

编写基本的CSS和HTML是我们作为Web开发人员学习的首要事情之一。然而,我遇到的很多应用程序显然没有人花时间真正考虑前端开发的长久性和可维护性。我认为这主要是因为许多开发人员对组织CSS / HTML和JavaScript的策..

天天写业务代码,如何成为技术大牛?

不管是开发、测试、运维,每个技术人员心理多多少少都有一个成为技术大牛的梦,毕竟"梦想总是要有的,万一实现了呢"!正是对技术梦的追求,促使我们不断地努力和提升自己。然而"梦想是美好的,现实却是残酷的",很多..

记我经历的一次公司破产经历,一行代码害死一家公司

前言这是一篇亲身经历的真实记录,事情发生在2010年。狗血剧情一再上演,使我的程序员生涯变得跌宕起伏,也从中学到了很多。在写这篇文章之前,我还专门去查了这家公司的资料。有如下事实:1.官网已经打不开了。2.天..

如何处理前任程序员留下的代码

作为软件工程师不可避免会遇到的一个场景是:我们在改变或添加一个功能到不是我们创建的、我们不熟悉的、与我们负责的系统部分无关的代码中时,会遇到麻烦。虽然这可能会是一个繁琐而艰巨的任务,但是由于使用其他开..

对码农而言什么样的代码才能叫做好代码?

好的代码,就像是好的笑话——无需解释就能让别人明白。如果你的代码能够做到不解自明,在大多数时候,你根本无需为其配备说明文档。好的代码,就像是一辆配备了优秀音响和杯架的汽车,这辆车在行驶到最高速度的时候..

当一个程序员写不出代码了,该怎么办?

你已经对着电脑n个小时了。不知道该写什么代码,或者一种摔键盘的冲动正在你的胸中酝酿。咖啡一杯接着一杯。不敢再喝了,因为搞不好要有副作用了,心跳加速,身体不由自主地颤抖,出冷汗,但还是无法产出任何代码。..

ASP.NET MVC最常用的设计模式代码示例

ASP.NET MVC 是一个基于分层架构的框架,其核心架构本身已经实现了 MVC 模式(Model-View-Controller)。除了 MVC 模式,开发者在使用 ASP.NET MVC 开发应用时,通常会结合其他设计模式以提高代码的可维护性、可扩展..

10款.NET开发中推荐的代码分析和质量工具

以下是10款.NET开发中常用的代码分析和质量工具列表,以及它们的主要功能和使用场景:1. SonarQube简介:一个流行的开源静态代码分析平台,用于检测代码中的漏洞、错误、技术债务等问题。主要功能:支持代码质量监测..

.NET C# EntityFramework(EF)连接SQLite代码示例

在.NET C#中使用Entity Framework(EF)连接SQLite数据库是一种常见的做法,可以有效地管理和操作数据。以下是一个简单的示例代码,展示了如何使用EF Core连接到SQLite数据库并执行基本的CRUD操作。首先,确保你已经..

设计模式之高质量代码

0,什么是高质量代码我觉得回答这个问题,应该从两个方面考虑。从业务角度考虑。首先,在公司开发一款软件,应该是业务在驱动。所以,从这个角度来说,代码第一个应该满足的是业务需求,如果连最基本的业务需求都满..

Blazor的N种渲染模式原理和常见问题说明

我们从下面这幅图开始,下图显示了三种渲染模式,分别称之为静态SSR、交互式SSR(即之前的BlazorServer)、交互式CSR(即之前的BlazorWasm)。还有一种渲染模式BlazorHybrid,稍后说。一、先浅层理解一个图例静态SSR:经..

C#发送邮件代码简洁示例(附源码下载)

C#发送邮件,主要使用的是System.Net.Mail命名空间下的方法实现,方法很简单,短短十几行代码即可完成发送,具体代码如下。 try { MailMessage myMail = new MailMessage(); myMail.From = new MailAddress..

AutoMapper.AutoMapperMappingException”类型的异常在 AutoMapper.dll 中发生,但未在用户代码中进行处理

今天修改别人的代码抛出了这样的异常: AutoMapper.AutoMapperMappingException&rdquo;类型的异常在 AutoMapper.dll 中发生,但未在用户代码中进行处理。进行了调试,往下走的时候直接报错了,百度之~中文网站上没..

支付宝第三方支付平台对接原理和实现

如果把商户网站使用第三方支付平台(比如支付宝)的原理搞清楚,那编程就变得简单多了。 整个过程大致这样: 1、商户与支付宝签约。 2、在商户网站购买商品,填写数量,确定购买后跳转到结账页面。结账页面可能包括订..

c#无损压缩图片代码,可设置压缩质量

之前写过一篇文章《使用htmlagilitypack+xpath抓取网页内容示例》,提到使用htmlagilitypack抓取网页信息。想做一个网络爬虫,但是想把网页上的图片也下载到本地,于是写了下载图片的功能。但是第三方网站上的图片大..

Linq to Object的Where和Select实现原理

Linq的Where是一个基于委托的代码封装,把数据筛选的通用逻辑完成,把判断逻辑交给委托传递。Select是基于委托的代码封装,把数据转换的通用逻辑完成,把转换逻辑交给委托传递。Linq还有很多方法,这些方法大多都是..

发表回复

返回顶部

微信分享

微信分享二维码

扫描二维码分享到微信或朋友圈

链接已复制
木德育儿网-健康孕育知识分享_育儿百科知识大全观知健康-健康知识小常识_养生知识分享交流平台三省养生网-养生文化分享与交流_健康知识传播知识库乾藏国学网-国学文化传播_国学经典分享与传承易学新知网-风水知识分享平台好孕堂-助孕健康知识--查询、助孕小知识分享无双运势网 - 易学爱好者交流平台!一步达贷款社区--·中介办卡贷款技术·网贷口子·卡民论坛app好运来网-易学知识分享平台_易经入门零基础自学曲大夫助孕-助孕知识分享交流平台道情先生-风水交流平台_道可道非常道巧农网 - 农业技术知识_乡村创业致富好帮手天慧理财网 - 专注财富增长_最全面的综合理财知识分享网站亿福缘网 - 风水知识分享平台亿洋易学-专注于易学知识分享的平台健康助孕科普内容平台,分享专业助孕知识-孕知网孕好网_专注试管婴儿科普_助孕问答_助您有好孕!包天龙运势网 - 易学爱好者交流平台!九六易学网 - 为易学爱好者提供一个优秀的学习知识平台来好孕 - 愿好运伴您而行风水知识网算命久久网-今日运势分享_祝您好运常伴品千年雅韵,书一纸风华 - 诗词百科诗词名句网叮当历史 - 古文排行榜_历史人物文化经典故事大全来福网 - 传统国学典故_国学文化感悟人生斗转星移网富凯风水孕力加持网-好孕汇聚之地_孕力加持_好孕终至幸孕方舟网-专业试管助孕资讯解析速配精选网-专注于理财知识分享交流平台看测运势网-周易生辰八字测算_免费八字合婚_婚姻配对测试迪肯风水头条-风水知识交流分享平台易学迷-易学风水学入门知识分享与交流久道网 - 传统国学典故_国学文化感悟人生乐禧易学网 - 专注于易学高质量案例分享网站历史时间网 - 全球历史上的今天大事件风水388 - 风水学入门_居家风水小常识伍贰易学网-专注于易学知识分享平台星座爱-专注于星座运势知识分享巴巴百科 - 专业知识问答百科分享平台族女网-引领国学新时尚_让国学流行起来_传统易学风水文化学佛笔记句子汇-每日经典语录短句推荐叶翁网-风水易学知识分享_周易易学知识占卦塔尘网素食购--素味禅心、膳养菩提术灿网-风水国学起名十二生肖运势_易学阴阳风水秘术雀牛网-2026热门汽车品牌排行榜_新能源汽车推荐_床车房车选购攻略_您身边的汽车专家植物迷-探索植物属性_种植技术知识分享平台龙哥易学网古诗词名句_诗词名句大全_古籍文学资料库-好再来网番茄免费文学平台_免费网络小说_无弹窗广告小说阅读网_诗词古文文学知识分享-番茄文学网工作岗位职责网-本年度各行业部门工作职责大全_提供各行各业岗位职责范本久图网-唯美图片_卡通动漫图片_天堂图片_帅哥美女艺术图片_数以万计美图资料库醋椒影视网-2026年热门电影作品推荐_最火爆的电视剧导航网站常能网-带您了解那些经典的历史故事超追影视网-2026最新热门电影_热播电视剧在线追剧_高清免费短剧视频导航巴佩体育网-体育赛事新闻资讯_2026最新实时体育赛事比分捷报站星网 - 用心服务每一位站长,助力每一份梦想八万四千法门助好孕 - 助孕小贴士助你有好孕经书网 - 以音声作佛事,聆听与观想的修学园地 jingshu.net佛教音乐网 - 海量佛乐、梵呗、禅音在线试听与下载塔尊佛教网|借视频之舟,渡烦恼之海 Tazun.Cn聚合地图网好客运势网 - 经典典籍文化传承者听佛音 - 最好听的静心天籁之音老司机知识库--你的自学加速引擎,海量资源带你极速成长!唯美图片 - 高清唯美壁纸头像背景图库_PicURL图集素超人 - 国内领先的素食分享平台点优作文网 - 优秀作文大全_日记周记_读后感_历年中考高考范文顺发万年历-2026年日历,2026年老黄历查询,2026年黄道吉日素食学佛网佛教导航 - 开启智慧之旅,连接十方法缘 | fjdh.org.cn顺运堂 - 专业家居风水布局,八字命理分析,助您家宅兴旺,运势亨通地藏论坛-佛教网络净土_佛法综合社区生食主义哦嘿养殖网 - 热门乡村养殖发展项目_养殖技术知识分享大师看风水道秘相取名网-生辰八字五行取名_十二生肖取名品读名篇佳句,涵养诗意人生 - 古诗词网新华字典在线查字_在线汉语学习_汉字拼音_笔画顺序_组词造句_英语词典_诗词名句-诗文谜藏佛寺官网国学在线 - 国学网,国学学校,国学经典,国学地图弘善佛教网-传播正信正知佛法的佛教网站素食美-关爱健康_素食之美藏佛坑官网必过留学网_海外院校库_留学申请条件_留学费用_排名查询江湖以冷网 - 品读历史故事,感悟世间冷暖。生死书 - 佛教文化传承与生命智慧探索平台乐乐易学网-易学知识分享_生辰八字查询_五行八卦测算久食宿 - 旅游出行特色民宿推荐_全国名宿信息一览表趣知道 - 提问与分享,人人都是知识分享家 | Quzhidao.Com地藏孝亲网--南无大愿地藏王菩萨给农网吃好素-让生活因素而美情感语录网-婚姻情感语录_经典爱情语录_情感短信七七爱生活网十二星座_十二生肖运势_配对表_查询- 星座袋风水人家-国学文化风水知识交流平台道法网-风水运势解析_家居风水知识分享玖爱星座网-星座运势配对知识分享交流就识趣_专业中国传统文化网站_风水学藏经阁-最全的佛教经典典籍文库108工具网——您的全能在线工具箱中医文献网-中医古籍全文数据库推荐奇闻网-探索历史故事_带您了解历史上那些事儿八零生活网品酒啦-酒文化知识分享平台古籍文学网-最全的古文化知识分享平台公司起名-专注于弘扬传统文化的平台_宝藏典籍网非常易学网-生辰八字预测_生肖运势星座匹配居士之家-最全面的华人居士在线交流网站平台素超人-专注于善知识分享交流平台素超人 - 正能量善知识分享平台素超市 - 纯素生活购物平台VisaMastercardAmerican ExpressPayPalDiners ClubDiscover斗图趣 - 斗图表情包_有趣的斗图资源库富达裕-古文化经典藏品知识分享平台学佛网手机版笑一个吧 O(∩_∩)O 笑话大全_给生活加点笑料-XiaoYiGe.Cn班超文学网-优秀文学知识分享交流平台政卿事迹网-带您了解历史上的那些事儿素满香取名去 - 姓氏取名一览表_百家姓名字大全学佛网 - 佛弟子在线网络分享交流平台正能量网 - 传递正能量_真善美美文推荐搞笑gif动图网 - 内涵爆笑段子gif动态图_QQ表情包恶搞图片大全_97Gif.Com