[C语言][典例详解]打印杨辉三角(找规律简单实现)

news/2024/10/23 3:40:30/

目录

杨辉三角的相关知识

杨辉三角图:

 

杨辉三角的规律

在编程中实现

第一步 :我们先实现数字的打印,后面再加上空格构成三角形形状;

​编辑

1.首先我们可以直观的看出三角形的两个斜边都是1;所以我们先打印斜边的1(代码实现+分析+运行效果:)

2.打印中间的数据(代码实现+分析+运行效果)

 第二步:加上空格构成三角形(代码实现+分析+运行效果)

 总代码:


杨辉三角的相关知识

杨辉三角图:

 

 


杨辉三角的规律

1.每个数等于它上方两数之和。(如下图1)

 2.每行数字左右对称,由1开始逐渐变大。(如图)

 3.第n行的数字有n项。(由上图容易看出)

4.(a+b)^n的展开式中的各项系数依次对应杨辉三角的第(n+1)行中的每一项。(如图)

 

 所以我们也可以用二项式来写出,但下面所讲的是用上面行的数字加来得下面所要的数字


在编程中实现

杨辉三角在编程实现中较为容易。最常见的算法便是用上一行递推计算;也有运用和组合的对应关系而使用阶乘计算的,然而后者速度较慢且阶乘容易溢出

第一步 :我们先实现数字的打印,后面再加上空格构成三角形形状;

如:

1.首先我们可以直观的看出三角形的两个斜边都是1;所以我们先打印斜边的1(代码实现+分析+运行效果:

代码实现:

int main()
{int arr[10][10] = { 0 };int i = 0;for (i=0;i<10;i++){arr[i][0] = 1;int j = 0;for (j = 0; j < i + 1; j++){if (i == j){arr[i][j] = 1;}}}//打印看看效果for (i = 0; i < 10; i++){int j = 0;for (j = 0; j < i + 1; j++){printf("%d ",arr[i][j]);}printf("\n");}return 0;
}

分析:

 

运行效果:

 


2.打印中间的数据(代码实现+分析+运行效果

利用上一行的前面一列的数加上一行本列数得到这个数

如:我们要得到第三行的第二个数2   即arr[3][1];即arr[3-1][1-1]+arr[3-1][1]=arr[3][1]=2

 代码实现:

int main()
{int arr[10][10] = { 0 };int i = 0;for (i=0;i<10;i++){arr[i][0] = 1;int j = 0;for (j = 0; j < i + 1; j++){if (i == j){arr[i][j] = 1;}if (i > 1 && j > 0){arr[i][j] = arr[i - 1][j - 1] + arr[i - 1][j];}printf("%d ",arr[i][j]);}printf("\n");}return 0;
}

代码分析:

 运行结果:

 第二步:加上空格构成三角形(代码实现+分析+运行效果

代码实现:

int main()
{int arr[10][10] = { 0 };int i = 0;for (i=0;i<10;i++){int n = i;arr[i][0] = 1;int j = 0;for (j = 0; j < i + 1; j++){if (i == j){arr[i][j] = 1;}if (i > 1 && j > 0){arr[i][j] = arr[i - 1][j - 1] + arr[i - 1][j];}while (10 - (n + 1)){printf(" ");n++;}printf("%d ",arr[i][j]);}printf("\n");}return 0;
}

代码分析:

运行结果:


 总代码:

int main()
{int arr[10][10] = { 0 };int i = 0;for (i=0;i<10;i++){int n = i;arr[i][0] = 1;int j = 0;for (j = 0; j < i + 1; j++){if (i == j){arr[i][j] = 1;}if (i > 1 && j > 0){arr[i][j] = arr[i - 1][j - 1] + arr[i - 1][j];}while (10 - (n + 1)){printf(" ");n++;}printf("%d ",arr[i][j]);}printf("\n");}return 0;
}


http://www.ppmy.cn/news/102739.html

相关文章

机器学习常识 2: 数据类型

摘要: 本贴讨论常见的数据类型. 1. 基本数据元素 (data item) 的类型 基本元素的类型包括: 布尔型、枚举型、实型等。 布尔型有两种取值, 如: Yes/No, Pass/Fail.枚举型有多种取值, 如: 颜色有红/黄/绿, 形状有方/圆/梯. 这些值之间一般没有大小关系.实型如: 人的身高, 体重…

WGS84坐标转BD-09坐标(wgs84转百度)

推荐使用方法2 &#xff01;&#xff01;&#xff01; Web服务API | 百度地图API SDK 方法1 定义一个待转换的坐标数组。 // 待转换的坐标数组 var points [new BMap.Point(116.404, 39.915),new BMap.Point(121.48044, 31.236985),new BMap.Point(113.952051, 22.538413),//…

如何在多个端口上运行 SSH 服务器?

SSH&#xff08;Secure Shell&#xff09;是一种用于安全远程访问和管理服务器的协议。默认情况下&#xff0c;SSH服务器在Linux系统上使用22号端口进行通信。但是&#xff0c;有时我们可能需要在多个端口上运行SSH服务器&#xff0c;以满足特定的需求或增强服务器的安全性。 本…

spring如何解决循环依赖

一、代码 Component public class BService {Autowiredprivate AService aService;public void work(){System.out.println("bservice的工作");} }Component public class AService {Autowiredprivate BService bService;public void work(){System.out.println(&q…

SpringBoot 使用事务报错:No transaction aspect-managed TransactionStatus in scope

当使用Spring Boot进行开发时&#xff0c;你可能会遇到以下错误之一&#xff1a;“No transaction aspect-managed TransactionStatus in scope”。这个错误通常发生在方法中手动回滚事务的情况下&#xff0c;但方法本身没有被Transactional注解修饰。 在本文中&#xff0c;我…

曾经由盛转衰的骈文,却引领后人在文质兼美的创作之路上坚定前行

又叫骈体文&#xff0c;是和散文相对应的一种文体&#xff0c;它兴起于汉末&#xff0c;形成于魏晋&#xff0c;最盛行于南北朝&#xff0c;在初唐、中唐、唐末、五代、宋初时也盛极一时。古人语&#xff1a;两马并驾为骈&#xff0c;所以骈文最大的特点是用对偶的手法&#xf…

Maven——SDK中的构建范围,构建插件,构建参数说明

Maven 依赖使用注意 封装 Maven SDK 的 Dependency 时&#xff0c;需要注意以下几点&#xff1a; 版本控制&#xff1a;确保所依赖的 SDK 版本与当前应用程序的其他依赖项兼容&#xff0c;并在 pom.xml 文件中指定正确的版本号。 稳定性&#xff1a;使用经过稳定测试和验证的…

06. 数据结构之散列表

前言 散列表也叫作哈希表&#xff08;hash table&#xff09;&#xff0c;这种数据结构提供了键&#xff08;Key&#xff09;和值&#xff08;Value&#xff09;的映射关系。只要给出一个Key&#xff0c;就可以高效查找到它所匹配的Value&#xff0c;时间复杂度接近于O(1) 1.…