【愚公系列】2021年11月 C#版 数据结构与算法解析(递归)

本文涉及的产品
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
云解析 DNS,旗舰版 1个月
全局流量管理 GTM,标准版 1个月
简介: 【愚公系列】2021年11月 C#版 数据结构与算法解析(递归)

1.介绍

简单的说:递归就是方法自己调用自己,每次调用时传入不同的变量,递归有助于编程者解决复杂的问题,同时也让代码变得整洁


2.规则

执行一个方法时,就创建一个新的受保护的独立空间(栈空间)


方法的局部变量是独立的,不会相互影响,比如n变量


如果方法中使用的是引用类型变量(比如数组),就会共享该引用类型的数据


递归必须向退出递归条件逼近,否则就是无限递归了,出现StackOverflowError,死龟


当一个方法执行完毕,或者遇到return,就会返回,遵守谁调用,就将结果返回给谁,同时当方法执行完毕或者返回时,该方法也就执行完毕


3.递归能解决什么问题

1.各种数学问题如:八皇后问题,汉诺塔,阶乘问题,迷宫问题等


2.各种算法也会使用到递归,比如快排、归并排序,二分查找,分治算法


4.示例:打印问题、阶乘问题


1.图解:

image.png

2.代码示例

public class RecursionTest
    {
        public static void Test(int num)
        {
            if (num > 2)
            {
                Test(num - 1);
            }
            System.Console.WriteLine("num=" + num);
        }
        public static int Factorial(int num)
        {
            if (num == 1)
            {
                return 1;
            }
            return Factorial(num - 1) * num;
        }
        public static void RecursionDemo()
        {
            Test(4);
            System.Console.WriteLine("\n5的阶乘是:"+Factorial(5));
        }
    }

3.演示图

image.png

性能分析:递归是存在栈里面的,相当于俄罗斯套娃。,容易照成程序崩溃

相关文章
|
21天前
|
存储 消息中间件 NoSQL
Redis数据结构:List类型全面解析
Redis数据结构——List类型全面解析:存储多个有序的字符串,列表中每个字符串成为元素 Eelement,最多可以存储 2^32-1 个元素。可对列表两端插入(push)和弹出(pop)、获取指定范围的元素列表等,常见命令。 底层数据结构:3.2版本之前,底层采用**压缩链表ZipList**和**双向链表LinkedList**;3.2版本之后,底层数据结构为**快速链表QuickList** 列表是一种比较灵活的数据结构,可以充当栈、队列、阻塞队列,在实际开发中有很多应用场景。
|
22天前
|
前端开发 JavaScript 开发者
揭秘前端高手的秘密武器:深度解析递归组件与动态组件的奥妙,让你代码效率翻倍!
【10月更文挑战第23天】在Web开发中,组件化已成为主流。本文深入探讨了递归组件与动态组件的概念、应用及实现方式。递归组件通过在组件内部调用自身,适用于处理层级结构数据,如菜单和树形控件。动态组件则根据数据变化动态切换组件显示,适用于不同业务逻辑下的组件展示。通过示例,展示了这两种组件的实现方法及其在实际开发中的应用价值。
28 1
|
7天前
|
算法 C#
C#常见的四种经典查找算法
C#常见的四种经典查找算法
|
7天前
|
算法 C# 索引
C#线性查找算法
C#线性查找算法!
|
1月前
|
存储 算法 C#
C#哈希查找算法
C#哈希查找算法
|
1月前
|
算法 C# 索引
C#二分查找算法
C#二分查找算法
|
1月前
|
算法 搜索推荐 Shell
数据结构与算法学习十二:希尔排序、快速排序(递归、好理解)、归并排序(递归、难理解)
这篇文章介绍了希尔排序、快速排序和归并排序三种排序算法的基本概念、实现思路、代码实现及其测试结果。
21 1
|
21天前
|
存储 NoSQL 关系型数据库
Redis的ZSet底层数据结构,ZSet类型全面解析
Redis的ZSet底层数据结构,ZSet类型全面解析;应用场景、底层结构、常用命令;压缩列表ZipList、跳表SkipList;B+树与跳表对比,MySQL为什么使用B+树;ZSet为什么用跳表,而不是B+树、红黑树、二叉树
|
1月前
|
算法 定位技术
数据结构与算法学习九:学习递归。递归的经典实例:打印问题、阶乘问题、递归-迷宫问题、八皇后问题
本文详细介绍了递归的概念、重要规则、形式,并展示了递归在解决打印问题、阶乘问题、迷宫问题和八皇后问题等经典实例中的应用。
40 0
|
1月前
|
存储 算法 搜索推荐
数据结构--堆的深度解析
数据结构--堆的深度解析

推荐镜像

更多