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):在树或图的遍历过程中,可以使用递归实现深度优先搜索,先探索当前节点的子节点,再回溯到父节点的其他未探索子节点。
  • 解决复杂问题:递归可以将复杂问题分解成简单的子问题,并通过先解决子问题再合并的方式得到最终解。例如,递归可以用于计算斐波那契数列、阶乘、二叉树的高度等。
  • 反转操作:递归可以实现字符串、列表、数组等的反转操作,先处理最后一个元素,再处理前面的元素,从而实现先进后出的效果。

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

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

相关文章

IAR编译和调试CMS32L051

0 Preface/Foreword 0.1 参考文档 中微半导体BAT系列单片机学习笔记_V1.1.pdf 1 配置方法 1.1 编译工具链添加 CMS对于IAR工具&#xff0c;有一个插件文件&#xff0c;用于安装对应的CMS系列芯片。 工具名称&#xff1a;iar_plug20210926.7z 按照完成之后&#xff0c;可…

[Python小工具]Python批量生成数据到MySQL

[Python小工具]Python批量生成数据到MySQL base.py #!/usr/bin/python # -*- coding:utf-8 -*- import time import random from datetime import datetime, timedelta from faker import Faker import stringfake Faker(zh_CN)class Base_conn:# 数据库连接配置初始化def _…

如果我要访问一个网址,那么在网络中会有哪些过程

访问一个网址是我们日常网络使用中非常常见的操作&#xff0c;背后涉及到一系列精密而复杂的步骤。这个过程包括DNS解析、建立TCP连接、发起HTTP请求、服务器处理请求、服务器响应、浏览器渲染等环节。在这篇文章中&#xff0c;我们将深入探讨这些步骤&#xff0c;并解释它们在…

redis配置信息整理

redis部署分为几种方式&#xff1a;单机、哨兵&#xff08;主从&#xff09;、集群。对应这几种部署方式redis的配置信息也有不同&#xff0c;总结如下&#xff1a; 单机模式&#xff1a; spring:redis:database: 0timeout: 8000password: 123456host: 192.168.56.101port: 6…

强大的虚拟机Parallels Desktop 19 mac中文激活

Parallels Desktop是一款功能全面、易于使用的虚拟机软件&#xff0c;它为用户提供了在Mac电脑上同时运行多个操作系统的便利。 软件下载&#xff1a;Parallels Desktop 19 mac中文激活版下载 Parallels Desktop 19 mac具有快速启动和关闭虚拟机的能力&#xff0c;让用户能够迅…

基于SpringBoot+Vue学科竞赛管理系统

文章目录 基于SpringBootVue学科竞赛管理系统1系统概述1.3系统设计思想 2相关技术2.1 MYSQL数据库2.2 B/S结构2.3 Spring Boot框架简介2.4 Vue简介 3系统分析3.1可行性分析3.1.1技术可行性3.1.2经济可行性3.1.3操作可行性 3.2系统性能分析3.2.1 系统安全性3.2.2 数据完整性 3.4…

Wampserver 切换中文时无法启动报错处理

在使用 Wampserver 软件时默认为英语&#xff0c;可以看到有语言选择功能&#xff0c;切换其他语言。但选择中文切换后&#xff0c;软件重启时报如下错误&#xff1a; The configuration file contains a systax error on line 44:[EParseError] Mismatched or misplaced quoue…

(十六)串口UART

文章目录 UART简介传输数据帧和波特率定时器1作为串口1波特率发生器串口部分相关寄存器TMODAUXRPCONSCONSBUF 串口1工作模式1&#xff1a;8位UART&#xff0c;波特率可变总体工作原理如何简单接收一个字符和发送数据一步之遥的设置现象演示 UART简介 通用异步收发传输器(Unive…

1汇编学习 用chatGPT来分析汇编的含义:让一切变的容易 每句注释 OllyDbg 用chatGPT来学习:让一切变的容易,迅速成为绝顶高手

用chatGPT来学习&#xff1a;让一切变的容易&#xff0c;迅速成为绝顶高手 004010C1 > 8A83 1A214000 mov al, byte ptr [ebx40211A] 004010C7 . 3C 00 cmp al, 0 004010C9 . 74 08 je short 004010D3 004010CB . 3C 47 cmp al, 47 004010CD . 75 01 jnz short 004010D0 00…

计算机网络(第六版)复习提纲19

SS4.4 网际控制报文协议ICMP ICMP报文作为IP数据报的数据部分&#xff0c;加上IP报文的首部进行发送 一 ICMP报文的种类 1 ICMP差错报告报文 有四种ICMP差错报告报文 ①终点不可达&#xff0c;路由器或者主机不能交付数据报时向原点发送 ②时间超过&#xff0c;当路由器收到生…

一种轻量分表方案-MyBatis拦截器分表实践|京东零售技术实践

背景 部门内有一些亿级别核心业务表增速非常快&#xff0c;增量日均100W&#xff0c;但线上业务只依赖近一周的数据。随着数据量的迅速增长&#xff0c;慢SQL频发&#xff0c;数据库性能下降&#xff0c;系统稳定性受到严重影响。本篇文章&#xff0c;将分享如何使用MyBatis拦…

微软Azure-OpenAI 测试调用及说明

本文是公司在调研如何集成Azure-openAI时&#xff0c;调试测试用例得出的原文&#xff0c;原文主要基于官方说明文档简要整理实现 本文已假定阅读者申请部署了模型&#xff0c;已获取到所需的密钥和终结点 变量名称值ENDPOINT从 Azure 门户检查资源时&#xff0c;可在“密钥和…

Advanced CNN

文章目录 回顾Google NetInception1*1卷积Inception模块的实现网络构建完整代码 ResNet残差模块 Resedual Block残差网络的简单应用残差实现的代码 练习 回顾 这是一个简单的线性的卷积神经网络 然而有很多更为复杂的卷积神经网络。 Google Net Google Net 也叫Inception V…

java基础面试题:BIO,NIO,AIO 有什么区别?

BIO、NIO和AIO是Java中用于处理I/O操作的不同编程模型&#xff0c;它们有以下区别&#xff1a; 阻塞 I/O&#xff08;BIO&#xff09;&#xff1a;BIO是传统的阻塞式I/O模型&#xff0c;它基于流&#xff08;Stream&#xff09;和阻塞调用&#xff0c;即当一个线程执行I/O操作时…

5、应急响应-拒绝服务钓鱼识别DDOS压力测试邮件反制分析应用日志

目录 前言&#xff1a; 1、#内网应急-日志分析-爆破&横向&数据库 2、#红队APT-钓鱼邮件识别-内容&发信人&附件 3、#拒绝服务攻击-DDOS&CC-代理&防火墙防御 用途&#xff1a;个人学习笔记&#xff0c;欢迎指正&#xff01; 前言&#xff1a; 了解和…

OkHttp完全解读

一&#xff0c;概述 OkHttp作为android非常流行的网络框架&#xff0c;笔者认为有必要剖析此框架实现原理&#xff0c;抽取并理解此框架优秀的设计模式。OkHttp有几个重要的作用&#xff0c;如桥接、缓存、连接复用等&#xff0c;本文笔者将从使用出发&#xff0c;解读源码&am…

深度视频恢复软件推荐,轻松恢复视频文件!

“我在电脑上保存了一些视频&#xff0c;但在清理时却不小心将这些视频删除了&#xff0c;有什么方法可以恢复删除的视频吗&#xff1f;希望大家给我推荐一些好用的方法。” 随着科技的飞速发展&#xff0c;数字媒体已经成为了我们生活中不可或缺的一部分。然而&#xff0c;数字…

国图公考:考公和考编一样吗?

公务员&#xff1a;是指在各级机关中&#xff0c;符合规定&#xff0c;行使职权&#xff0c;执行公务的人员 事业单位&#xff1a;事业单位是指由国家或社会组织举办&#xff0c;从事教育、科学、文化、卫生、体育等社会公益事业的单位。 公务员和事业编都是有编制的&#xf…

【lesson33】MySQL使用C/C++连接

文章目录 mysql connectConnector/C 使用mysql接口介绍完整代码 mysql connect mysql的基础&#xff0c;我们之前已经学过&#xff0c;后面我们只关心使用 要使用C语言连接mysql&#xff0c;需要使用mysql官网提供的库&#xff0c;大家可以去官网下载 我们使用C接口库来进行连…

C++入门学习(二十二)选择结构-三目运算符

三目运算符&#xff0c;是一个程序开发的术语&#xff0c;优先级高于赋值、逗号运算符&#xff0c;低于其他运算符。适用于程序开发。 格式&#xff1a; condition ? expression1 : expression2 其中&#xff0c;condition 是一个布尔表达式&#xff0c;expression1 和 expr…