探索杨辉三角形的奥秘:C#实现

news2024/10/9 4:49:39

文章目录

    • 杨辉三角形简介
      • 特点
    • C#实现杨辉三角形
      • 环境准备
      • 代码实现
      • 代码解释
        • 1. 用户输入
        • 2. 输入验证
        • 3. 初始化第一行
        • 4. 生成杨辉三角形
        • 5. 打印杨辉三角形
    • 结论


杨辉三角形,也被称为帕斯卡三角形,是一个历史悠久且充满数学魅力的数字模式。它不仅在数学领域有着广泛的应用,比如组合数学、概率论和代数,而且它的结构和对称性也让人着迷。在本文中,我们将一起探索杨辉三角形的奥秘,并学习如何使用C#编程语言来实现它。

杨辉三角形简介

杨辉三角形是一个由数字组成的三角形阵列,其中每一行的首尾数字都是1,而中间的每个数字都是它正上方两个数字的和。这个模式在不同的文化和时代中都有发现,包括中国、印度和欧洲。

特点

  • 对称性:杨辉三角形是对称的,即每一行的数字从中间向两边对称。
  • 二项式系数:杨辉三角形中的每个数字都可以表示为二项式系数,这在组合数学中非常重要。
  • 斐波那契数列:杨辉三角形的某些行的数字之和等于斐波那契数列。

C#实现杨辉三角形

下面是一个使用C#实现杨辉三角形的简单示例。这个程序会请求用户输入想要生成的杨辉三角形的行数,然后打印出对应的三角形。

环境准备

在开始编码之前,请确保你的计算机上安装了.NET环境和代码编辑器,如Visual Studio。

代码实现

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace _5_
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.Write("请输入杨辉三角形的行数:");
            string input = Console.ReadLine(); // 读取用户输入
            int rows; // 存储杨辉三角形的行数
            
            // 尝试将输入转换为整数
            while (!int.TryParse(input, out rows) || rows <= 0)
            {
                Console.Write("输入无效,请输入一个正整数作为行数:");
                input = Console.ReadLine();
            }

            int[] currentRow = new int[1] { 1 }; // 初始化第一行
            for (int i = 0; i < rows; i++)
            {
                // 打印当前行
                for (int j = 0; j < currentRow.Length; j++)
                {
                    Console.Write(currentRow[j] + " ");
                }
                Console.WriteLine(); // 换行

                // 计算下一行
                int[] nextRow = new int[currentRow.Length + 1];
                nextRow[0] = 1; // 下一行的第一个数字是1
                for (int j = 1; j < nextRow.Length - 1; j++)
                {
                    // 下一行的每个数字是当前行的两个相邻数字之和
                    nextRow[j] = currentRow[j - 1] + currentRow[j];
                }
                nextRow[nextRow.Length - 1] = 1; // 下一行的最后一个数字是1
                currentRow = nextRow; // 更新当前行为下一行
            }
            Console.ReadLine();
        }
    }
}

代码解释

1. 用户输入

程序首先提示用户输入想要生成的杨辉三角形的行数。

Console.Write("请输入杨辉三角形的行数:");
string input = Console.ReadLine(); // 读取用户输入
int rows; // 存储杨辉三角形的行数
2. 输入验证

使用int.TryParse验证用户输入是否为正整数。

while (!int.TryParse(input, out rows) || rows <= 0)
{
    Console.Write("输入无效,请输入一个正整数作为行数:");
    input = Console.ReadLine();
}
3. 初始化第一行

杨辉三角形的第一行只有一个数字1。

int[] currentRow = new int[1] { 1 }; // 初始化第一行
4. 生成杨辉三角形

通过两层循环,外层循环控制行数,内层循环控制每行的数字。每行的第一个和最后一个数字是1,中间的数字是上一行相邻两个数字之和。

for (int i = 0; i < rows; i++)
{
    // 打印当前行
    for (int j = 0; j < currentRow.Length; j++)
    {
        Console.Write(currentRow[j] + " ");
    }
    Console.WriteLine(); // 换行

    // 计算下一行
    int[] nextRow = new int[currentRow.Length + 1];
    nextRow[0] = 1; // 下一行的第一个数字是1
    for (int j = 1; j < nextRow.Length - 1; j++)
    {
        nextRow[j] = currentRow[j - 1] + currentRow[j];
    }
    nextRow[nextRow.Length - 1] = 1; // 下一行的最后一个数字是1
    currentRow = nextRow; // 更新当前行为下一行
}
5. 打印杨辉三角形

使用嵌套循环打印出整个三角形。
在这里插入图片描述

结论

杨辉三角形不仅是一个数学上的奇迹,也是编程练习的绝佳案例。通过实现杨辉三角形,我们可以加深对数组、循环和基本输入输出操作的理解。此外,它也是探索更深层次数学概念的起点,比如组合数学和概率论。

希望这篇文章能帮助你更好地理解杨辉三角形,并激发你对数学和编程的热情。如果你有任何问题或想要进一步探索,请随时留言讨论。

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

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

相关文章

论文速读:基于概率教师学习的域自适应目标检测

原文标题&#xff1a;Learning Domain Adaptive Object Detection with Probabilistic Teacher 中文标题&#xff1a;基于概率教师学习的域自适应目标检测 代码地址&#xff1a; GitHub - hikvision-research/ProbabilisticTeacher: An official implementation of ICML 2022 p…

【计算机毕设】springboot-家具销售电商平台(附源码)

摘 要 Abstracts 目 录 第1章 绪论 1.1课题背景 1.2研究意义 1.3研究内容 第2章 技术介绍 2 2.1相关技术 3 2.2 Java技术 3 2.3 MySQL数据库 4 2.4 Tomcat介绍 4 2.5 Spring Boot框架 5 第3章 需求分析 5 3.1需求分析概述 6 3.2可行性分析 6 3.2.1经济可行性 6 3.2.2技…

Docker:快速部署

docker安装&#xff1a; ​‌​‬&#xfeff;​&#xfeff;⁠​‍‬​‍‬‬‌​‬‬‬​&#xfeff;⁠​‍​​‌‬‌&#xfeff;​​​​​​‌​​​​⁠​‍⁠‌安装Docker - 飞书云文档 (feishu.cn) docker命令解读 docker run -d \ > --name mysql \ > -p 33…

OpenHarmony(鸿蒙南向开发)——轻量系统内核(LiteOS-M)【异常调测】

往期知识点记录&#xff1a; 鸿蒙&#xff08;HarmonyOS&#xff09;应用层开发&#xff08;北向&#xff09;知识点汇总 鸿蒙&#xff08;OpenHarmony&#xff09;南向开发保姆级知识点汇总~ 持续更新中…… 基本概念 OpenHarmony LiteOS-M提供异常接管调测手段&#xff0c;…

【基础算法总结】字符串篇

目录 一&#xff0c;算法简介二&#xff0c;算法原理和代码实现14.最长公共前缀5.最长回文子串67.二进制求和43.字符串相乘 三&#xff0c;算法总结 一&#xff0c;算法简介 字符串 string 是一种数据结构&#xff0c;它一般和其他的算法结合在一起操作&#xff0c;比如和模拟&…

守护数据安全:.rmallox勒索病毒的防范与应对策略

导言 在当今这个数字化时代&#xff0c;网络空间已成为人们生活、工作和娱乐不可或缺的一部分。然而&#xff0c;随着互联网的普及和技术的飞速发展&#xff0c;网络安全问题也日益凸显&#xff0c;成为了一个全球性的挑战。其中&#xff0c;.rmallox勒索病毒作为一种恶意软件…

【linux】进程间的通信(一)

1. 了解进程通信 两个或者多个进程实现数据层面的交互 因为进程独立性的存在&#xff0c;导致进程通信成本较高&#xff08;通信需要成本&#xff09; 2. 进程间通信目的 进程间通信的本质是&#xff0c;让不同的进程看到同一份"资源"&#xff08;即同一份内存空…

基础算法之前缀和--Java实现(下)--LeetCode题解:-和为 K 的子数组 - 和可被 K 整除的子数组 -连续数组-矩阵区域和

这里是Themberfue 和为 K 的子数组 题目解析 返回子数组中所有元素的和等于给定k的个数。 算法讲解 这题好像是用滑动窗口解决&#xff0c;但其实不能&#xff0c;因为 nums 中的元素可能存在负数&#xff0c;就不能保证其单调性的性质。 用前缀和求也不易想到&#xff0c;…

Java编码方式:Base64编码与解码

1、Base64 算法介绍 Base64 是一种基于 64 个可打印字符来表示二进制数据的表示方法。它主要用于在不支持二进制数据的场合&#xff08;如电子邮件、URL、文件系统名等&#xff09;传输二进制数据。严格来说 Base64 并不是一种加密/解密算法&#xff0c;而是一种编码方式。Bas…

数据挖掘学习笔记:朴素贝叶斯 | Python复现

数据挖掘学习笔记&#xff1a;朴素贝叶斯 机器学习系列&#xff08;四&#xff09;&#xff1a;朴素贝叶斯&#xff08;华强买瓜版&#xff09; - yyxy的文章 - 知乎 十分钟&#xff0c;让你再也忘不掉贝叶斯分类 - VoidHaruhi的文章 - 知乎 《机器学习》&#xff08;西瓜书&am…

快速生成单元测试

1. Squaretest插件 2. 依赖 <dependency><groupId>junit</groupId>

Spring异步线程池的问题

今天看一视频&#xff0c;提到说 Spring默认的异步线程池比较简单&#xff0c;每次执行异步任务&#xff0c;都会新建一个线程进行处理&#xff0c;不会重复利用&#xff0c;所以在用Spring框架开发的时候&#xff0c;需要自定义异步线程池。第一次听到这个说法。遂开始百度。 …

迷你世界表白神器爱心脚本lua

--迷你世界专用爱心表达公式 local a,angle,count,id30,0,0,math.random(668, 681) -- 根据需要调整θ的遍历范围和步长 while true do angle angle0.01 local ra*(math.sin(angle)*(math.sqrt(math.abs(math.cos(angle)))/(math.sin(angle)1.4)-2)2) if r>10…

动手学深度学习59 双向循环神经网络

1. 双向循环神经网络 视频&#xff1a;https://www.bilibili.com/video/BV12X4y1c71W/?p2&spm_id_frompageDriver&vd_sourceeb04c9a33e87ceba9c9a2e5f09752ef8 课件&#xff1a;https://courses.d2l.ai/zh-v2/assets/pdfs/part-3_7.pdf 课本&#xff1a; https://zh-…

机器学习K近邻算法——分类问题K近邻算法示例

针对“数据8.1”&#xff0c;讲解分类问题的K近邻算法&#xff0c;以V1&#xff08;转型情况&#xff09;为响应变量&#xff0c;以V2&#xff08;存款规模&#xff09;、V3&#xff08;EVA&#xff09;、V4&#xff08;中间业务收入&#xff09;、V5&#xff08;员工人数&…

【C++篇】继承之韵:解构编程奥义,领略面向对象的至高法则

文章目录 C 继承详解&#xff1a;初阶理解与实战应用前言第一章&#xff1a;继承的基本概念与定义1.1 继承的概念1.2 继承的定义 第二章&#xff1a;继承中的访问权限2.1 基类成员在派生类中的访问权限2.2 基类与派生类对象的赋值转换2.2.1 派生类对象赋值给基类对象2.2.2 基类…

多端同步的收银系统源码

随着经济的不断发展&#xff0c;很多门店越来越趋向连锁品牌化&#xff0c;收银系统自然也成为很多连锁门店必不可少的软件工具。希望通过一套软件可以帮助门店解决门店线下销售、会员管理、连锁多门店管理、线下线上一体化、商品库存管理等难题实现降本增效&#xff0c;为了方…

MySQL连接查询:联合查询

先看我的表结构 emp表 联合查询的关键字&#xff08;union all, union&#xff09; 联合查询 基本语法 select 字段列表 表A union all select 字段列表 表B 例子&#xff1a;将薪资低于5000的员工&#xff0c; 和 年龄大于50 岁的员工全部查询出来 第一种 select * fr…

大模型微调技术之 LoRA:开启高效微调新时代

一、LoRA 简介 LoRA&#xff0c;即低秩适应&#xff08;Low-Rank Adaptation&#xff09;&#xff0c;是一种用于微调大型语言模型的技术&#xff0c;旨在以较小的计算资源和数据量实现模型的快速适应特定任务或领域。 LoRA 方法通过引入低秩近似的思想&#xff0c;对大型预训…

NFS共享文件系统(将文件目录挂载到别的机器上)

我们创建的磁盘是否都必须挂载到本机上&#xff1f;并不是。在 Linux 和其他操作系统中&#xff0c;有一种叫做 NFS&#xff08;网络文件系统&#xff09;的工具&#xff0c;它允许跨网络共享文件系统资源。通过使用 NFS&#xff0c;我们可以将多个客户端服务器的数据目录挂载到…