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

C# 递归执行顺序

为了方便进一步理解递归,写了一个数字输出

class Program
{static void Main(string[] args){int number = 5;RecursiveDecrease(number);}static void RecursiveDecrease(int n){if (n > 0){Console.WriteLine("Before recursive call do : " + n);RecursiveDecrease(n - 1);Console.WriteLine("After recursive call  do : " + n);}}
}

输出结果:

Before recursive call do : 5
Before recursive call do : 4
Before recursive call do : 3
Before recursive call do : 2
Before recursive call do : 1
After recursive call  do : 1
After recursive call  do : 2
After recursive call  do : 3
After recursive call  do : 4
After recursive call  do : 5

class Program
{static void Main(string[] args){int number = 5;int[] ages ={1, 2, 3};RecursiveDecrease(number,ages);}static void RecursiveDecrease(int n,int[] age){if (n > 0){Console.WriteLine("Before recursive call do : " + n+ " array: "+string.Join(",",age));RecursiveDecrease(n - 1,age);Console.WriteLine("After recursive call one  do : " + n+ " array: "+string.Join(",",age));n=n+19;for (int i = 0; i < age.Length; i++){age[i]=age[i]+10;}Console.WriteLine("After recursive call  two do : " + n+ " array: "+string.Join(",",age));}}
}

输出结果:

Before recursive call do : 5 array: 1,2,3
Before recursive call do : 4 array: 1,2,3
Before recursive call do : 3 array: 1,2,3
Before recursive call do : 2 array: 1,2,3
Before recursive call do : 1 array: 1,2,3
After recursive call one  do : 1 array: 1,2,3
After recursive call  two do : 20 array: 11,12,13
After recursive call one  do : 2 array: 11,12,13
After recursive call  two do : 21 array: 21,22,23
After recursive call one  do : 3 array: 21,22,23
After recursive call  two do : 22 array: 31,32,33
After recursive call one  do : 4 array: 31,32,33
After recursive call  two do : 23 array: 41,42,43
After recursive call one  do : 5 array: 41,42,43
After recursive call  two do : 24 array: 51,52,53

具体使用方法如下:

  • 定义一个递归函数,入参数和返回类型。
  • 在函数体内,编写递归停止条件和递归调用的语句。
  • 在递归调用前后,可以编写其他需要执行的代码

总结:

    递归的执行顺序是先进后出的,每次递归调用都会暂停当前的执行,进入到新的函数调用中执行,直到满足退出条件时递归结束,然后返回到上一层递归调用,继续执行后续的代码。

  1. 先进后出的场景使用包括但不限于:
  • 栈数据结构:递归函数的调用栈是一种典型的先进后出的结构,可以利用栈的特性实现一些需要后进先出的操作。
  • 深度优先搜索(DFS):在树或图的遍历过程中,可以使用递归实现深度优先搜索,先探索当前节点的子节点,再回溯到父节点的其他未探索子节点。
  • 解决复杂问题:递归可以将复杂问题分解成简单的子问题,并通过先解决子问题再合并的方式得到最终解。例如,递归可以用于计算斐波那契数列、阶乘、二叉树的高度等。
  • 反转操作:递归可以实现字符串、列表、数组等的反转操作,先处理最后一个元素,再处理前面的元素,从而实现先进后出的效果。

相关文章:

C# 递归执行顺序

为了方便进一步理解递归&#xff0c;写了一个数字输出 class Program {static void Main(string[] args){int number 5;RecursiveDecrease(number);}static void RecursiveDecrease(int n){if (n > 0){Console.WriteLine("Before recursive call do : " n);Rec…...

go 实现暴力破解数独

一切罪恶的来源是昨晚睡前玩了一把数独&#xff0c;找虐的选了个最难的模式&#xff0c;做了一个多小时才做完&#xff0c;然后就睡不着了..........程序员不能受这委屈&#xff0c;今天咋样也得把这玩意儿破解了 破解思路&#xff08;暴力破解加深度遍历&#xff09; 把数独…...

go语言-字符串处理常用函数

本文介绍go语言处理字符串类型的常见函数。 ## 多行字符串 在 Go 中创建多行字符串非常容易。只需要在你声明或赋值时使用 () 。 str : This is a multiline string. ## 字符串的拼接 go // fmt.Sprintf方式拼接字符串 str1 : "abc" str2 : "def" …...

DevOps落地笔记-05|非功能需求:如何有效关注非功能需求

上一讲主要介绍了看板方法以及如何使用看板方法来解决软件研发过程中出现的团队过载、工作不均、任务延期等问题。通过学习前面几个课时介绍的知识&#xff0c;你的团队开始源源不断地交付用户价值。用户对交付的功能非常满意&#xff0c;但等到系统上线后经常出现服务不可用的…...

vs 撤销本地 commit 并保留更改

没想到特别好的办法&#xff0c;我想的是用 vs 打开 git 命令行工具 然后通过 git 命令来撤销提交&#xff0c;尝试之前建议先建个分支实验&#xff0c;以免丢失代码&#xff0c; git 操作见 git 合并多个 commit / 修改上一次 commit...

深度解读NVMe计算存储协议-1

随着云计算、企业级应用以及物联网领域的飞速发展&#xff0c;当前的数据处理需求正以前所未有的规模增长&#xff0c;以满足存储行业不断变化的需求。这种增长导致网络带宽压力增大&#xff0c;并对主机计算资源&#xff08;如内存和CPU&#xff09;造成极大负担&#xff0c;进…...

CHS_06.2.3.4_2+用信号量实现进程互斥、同步、前驱关系

CHS_06.2.3.4_2用信号量实现进程互斥、同步、前驱关系 知识总览信号量机制实现进程互斥信号量机制实现进程同步信号量机制实现前驱关系 知识回顾 各位同学 大家好 在这个小节中 我们要学习怎么用信号量机制来实现进程的同步互制关系 知识总览 那么 我们之前学习了互斥的几种软…...

Web实战丨基于Django的简单网页计数器

文章目录 写在前面Django简介主要程序运行结果系列文章写在后面 写在前面 本期内容 基于django的简单网页计数器 所需环境 pythonpycharm或vscodedjango 下载地址 https://download.csdn.net/download/m0_68111267/88795604 Django简介 Django 是一个用 Python 编写的高…...

mysql8安装基础操作(一)

一、下载mysql8.0 1.查看系统glibc版本 这里可以看到glibc版本为2.17&#xff0c;所以下载mysql8.0的版本时候尽量和glibc版本对应 [rootnode2 ~]# rpm -qa |grep -w glibc glibc-2.17-222.el7.x86_64 glibc-devel-2.17-222.el7.x86_64 glibc-common-2.17-222.el7.x86_64 gl…...

MIT6.5830 实验0

前置 本次实验使用 Golang 语言实现&#xff0c;在之前的年份中&#xff0c;都是像 cs186 那样使用 Java 实现。原因&#xff1a; Golang 语言作为现代化语言&#xff0c;简单易上手但功能强大。 使参加实验的同学有同一起跑线&#xff0c;而不是像Java那样&#xff0c;有些同…...

【简便方法和积累】pytest 单元测试框架中便捷安装插件和执行问题

又来进步一点点~~~ 背景&#xff1a;之前写了两篇关于pytest单元测试框架的文章&#xff0c;本篇内容对之前的做一个补充 一、pytest插件&#xff1a; pytest 有非常多的插件&#xff0c;很方便&#xff0c;以下为插件举例&#xff1a; pytest&#xff0c;pytest-html&#x…...

Zabbix数据库分离与邮件报警

基础环境&#xff1a;要有zabbix服务端与被监控端实验目标&#xff1a;源数据库与服务端存放在一台服务器上&#xff0c;分离后源数据库单独在一台服务器上&#xff0c;zabbix服务端上不再有数据库。环境拓扑图&#xff1a; 实验步骤&#xff1a; 1.在8.7服务器上安装相同版本…...

mybatisplus-多数据源配置

1. 流程 pom文件yml配置多数据源具体服务添加注解DS(“***”) 1.pom文件 <!--mybatis plus 起步依赖--><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.4.0</vers…...

微信小程序(二十八)网络请求数据进行列表渲染

注释很详细&#xff0c;直接上代码 上一篇 新增内容&#xff1a; 1.GET请求的规范 2.数据赋值的方法 源码&#xff1a; index.wxml <!-- 列表渲染基础写法&#xff0c;不明白的看上一篇 --> <view class"students"><view class"item">&…...

ubuntu22.04 安装conda

要在Ubuntu 22.04上安装Anaconda&#xff0c;可以遵循以下步骤&#xff1a; 首先&#xff0c;打开终端并更新系统包仓库&#xff0c;也需要安装curl工具&#xff0c;这可以通过以下命令完成&#xff1a; sudo apt update && sudo apt install curl -y使用curl命令行工具…...

W801学习笔记十:HLK-W801制作学习机/NES游戏机(总结)

本章总结一下整个开发过程中遇到的问题&#xff1a; 1、引脚的抗干扰问题&#xff1a; 屏幕显示的时候&#xff0c;概率出现花屏。无论怎么修改代码都不能解决&#xff0c;一个偶然的机会&#xff0c;发现当手触摸屏幕的WR和CS引脚时&#xff0c;屏幕会正常。查阅资料&#x…...

《HTML 简易速速上手小册》第6章:HTML 语义与结构(2024 最新版)

文章目录 6.1 语义化标签的重要性6.1.1 基础知识6.1.2 案例 1&#xff1a;使用 <article>, <section>, <aside>, <header>, 和 <footer>6.1.3 案例 2&#xff1a;构建带有嵌套语义化标签的新闻网站6.1.4 案例 3&#xff1a;创建一个带有 <mai…...

分析HarmonyOS应用/服务的CPU活动性能

CPU Profiler 性能分析是用来分析CPU性能瓶颈的工具&#xff0c;可以实时查看应用/服务的CPU使用率和线程活动&#xff0c;也可以查看记录的方法跟踪数据、方法采样数据和系统跟踪数据的详情。基于CPU性能分析&#xff0c;您可以了解在一段时间内执行了哪些方法&#xff0c;以及…...

Linux:理解信号量以及内核中的三种通信方式

文章目录 共享内存的通信速度消息队列msggetmsgsndmsgrcvmsgctl 信号量semgetsemctl 内核看待ipc资源单独设计的模块ipc资源的维护 理解信号量总结 本篇主要是基于共享内存&#xff0c;延伸出对于消息队列和信号量&#xff0c;再从内核的角度去看这三个模块实现进程间通信 共享…...

【ArcGIS微课1000例】0100:ArcGIS for CAD软件下载与安装(附安装包)

ArcGIS for CAD软件下载与安装(附安装包)。 文章目录 一、ArcGIS for CAD概述1. ArcGIS for CAD介绍2. 主要功能二、ArcGIS for CAD下载三、ArcGIS for CAD安装1. 安装CAD2. 安装ArcGIS for CAD3. 配置一、ArcGIS for CAD概述 1. ArcGIS for CAD介绍 ArcGIS for CAD是Esri提…...

别再被‘一亿像素’忽悠了!聊聊手机CMOS尺寸、像素和Remosaic那些事儿

手机CMOS尺寸、像素与成像质量的真相&#xff1a;别再被数字游戏迷惑 每次打开手机厂商的发布会&#xff0c;总能看到各种令人眼花缭乱的参数轰炸——"一亿像素"、"超大底传感器"、"超清画质"。这些营销术语让普通消费者一头雾水&#xff0c;甚至…...

Anthropic率先盈利:大模型商业化曙光初现,IPO竞争谁能笑到最后?

1. 前沿模型盈利曙光乍现前沿模型公司的利润表终于出现了正数。据《华尔街日报》报道&#xff0c;Anthropic正迎来关键季度&#xff0c;预计2026年第二季度收入超109亿美元&#xff0c;较第一季度的48亿美元增长超一倍&#xff0c;且首次实现季度营业利润。路透社称其二季度预计…...

自动化测试的最佳实践:这6个原则让你的测试脚本更稳定

在当前互联网行业快速迭代的开发模式下&#xff0c;自动化测试已经成为保障软件交付质量、提升测试效率的核心手段。据行业调研数据显示&#xff0c;成熟的互联网测试团队中&#xff0c;核心回归测试场景的自动化覆盖率已经超过80%&#xff0c;自动化测试承担了绝大部分重复性测…...

【2026 Q1实测数据】ChatGPT新增“因果推理引擎”准确率提升至89.7%,但83%用户因忽略这4个参数设置导致失效

更多请点击&#xff1a; https://codechina.net 第一章&#xff1a;ChatGPT“因果推理引擎”的架构演进与2026 Q1实测基准 OpenAI于2025年Q4正式将ChatGPT核心推理模块重构为“因果推理引擎”&#xff08;Causal Reasoning Engine, CRE&#xff09;&#xff0c;其本质是将传统…...

2026 主流技术栈:hermes agent多环境安装配置:Windows/Mac/Linux

一、Hermes agent 大模型选择 Hermes Agent 通过统一的模型抽象层接入不同厂商的大语言模型服务。实际部署时&#xff0c;建议根据数据合规要求、任务类型和成本预算进行选型。 1.1 国内场景&#xff1a;Kimi K2.6 对于数据需境内处理或存在私有化部署需求的场景&#xff0c…...

苹果CMS V10终极指南:3步打造专业视频网站,新手也能轻松上手

苹果CMS V10终极指南&#xff1a;3步打造专业视频网站&#xff0c;新手也能轻松上手 【免费下载链接】maccms10 苹果cms-v10,maccms-v10,麦克cms,开源cms,内容管理系统,视频分享程序,分集剧情程序,网址导航程序,文章程序,漫画程序,图片程序 项目地址: https://gitcode.com/gh…...

VHDL代码智能解析:基于大模型的硬件设计辅助实践

1. 项目背景与核心挑战在当今高性能处理器设计领域&#xff0c;VHDL作为硬件描述语言(HDL)的重要成员&#xff0c;因其严格的类型检查和结构化语法特性&#xff0c;被广泛应用于航空航天、汽车电子等关键行业。然而&#xff0c;随着芯片设计复杂度呈指数级增长&#xff0c;设计…...

后端工程师知识库

后端工程师深度课程 中文知识库 一套面向中级到高级后端工程师的系统进阶课程&#xff0c;共 9 大专题、146 篇万字长文&#xff0c;每篇含底层原理、代码示例、生产实践、陷阱清单与练习题。 &#x1f4c5; 内容基准&#xff1a;2026 年 5 月 —— HTTP/3 主流、TLS 1.3 pos…...

后端开发必知的数据库优化技巧:这5个方法让你的系统性能提升10倍

对于软件测试从业者来说&#xff0c;理解数据库优化逻辑不仅能帮我们更快定位性能瓶颈&#xff0c;还能让我们在测试阶段就提前发现潜在的数据库设计问题&#xff0c;避免上线后出现大规模性能故障。很多测试同学往往把注意力放在接口逻辑、功能正确性上&#xff0c;却忽略了数…...

如何快速掌握ElegantBook:面向初学者的LaTeX书籍排版终极指南

如何快速掌握ElegantBook&#xff1a;面向初学者的LaTeX书籍排版终极指南 【免费下载链接】ElegantBook Elegant LaTeX Template for Books 项目地址: https://gitcode.com/gh_mirrors/el/ElegantBook ElegantBook是一款专为学术书籍排版设计的优雅LaTeX模板&#xff0c…...