C# 递归执行顺序

news/2024/12/23 6:03:38/

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

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

具体使用方法如下:

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

总结:

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

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

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

相关文章

二叉树-堆应用(1)

目录 堆排序 整体思路 代码实现 Q1建大堆/小堆 Q2数据个数和下标 TopK问题 整体思路 代码实现 Q1造数据CreateData Q2建大堆/小堆 建堆的两种方法这里会用到前面的向上/向下调整/交换函数。向上调整&向下调整算法-CSDN博客 堆排序 整体思路 建堆(直…

图论——最短路径

目录 Dijkstra 算法Floyd-Warshalls algorithm用动态规划求解问题项目计划Dijkstra 算法 Dijkstra’s algorithm(迪杰斯特拉算法)是一种用于解决图中单源最短路径问题的贪婪算法。该算法由荷兰计算机科学家Edsger Dijkstra于1956年提出。它主要用于计算从一个起始顶点到图中…

spring cache的使用(Redis)

要在Spring Boot应用中使用Redis作为缓存,你需要遵循一些步骤来配置和使用Redis。以下是使用Spring Cache抽象与Redis进行整合的详细说明: 1. 添加依赖 首先,需要在pom.xml中添加Spring Boot的Redis starter依赖以及缓存的starter依赖。这会…

【Python】requests库的介绍及用法

目录 1、应用场景 2、requests-三方库 1、应用场景 Python中的requests库被广泛应用在需要发送HTTP请求的场景中。以下列举了一些主要的应用场景: API调用: 许多服务提供了API接口,我们可以使用requests库发送GET、POST、PUT、DELETE等请…

vue3使用is动态切换组件报错Vue received a Component which was made a reactive object.

vue3使用is动态切换组件,activeComponent用ref定义报错 Vue received a Component which was made a reactive object. This can lead to unnecessary performance overhead, and should be avoided by marking the component with markRaw or using shallowRef ins…

【云原生】docker安全与https加密的超文本传输协议CA证书生成

目录 一、docker安全 二、http与https的区别 三、为什么要使用 SSL 证书? 四、https证书认证的过程 https单向认证的访问流程 https双向认证的访问流程 五、如何获取证书? 六、实操获取证书并验证 1、通过阿里云获取证书 2、通过mkcert获取证书…

C++基础语法学习笔记

C Tutorial 1.基础语法 C 应用&#xff1a;操作系统、图形用户界面和嵌入式系统 C和C区别&#xff1a;C支持类和对象 C语法 #include <iostream> using namespace std;int main(){cout << "hello world!";return 0; }int main () { cout << &q…

Java 对部分接口返回数据进行加密,或其他处理

业务场景&#xff1a;后端项目中分为PC端和移动端接口&#xff0c;移动端为例如 mobile 开头的URl&#xff0c;需求为调用移动端接口时&#xff0c;对返回数据进行加密&#xff0c;PC端不加密 import cn.hutool.core.date.DatePattern; import cn.hutool.json.JSONConfig; impo…