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

网友投稿 565 2022-05-30

1.介绍

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

2.规则

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

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

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

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

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

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

3.递归能解决什么问题

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

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

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

1.图解:

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.演示图

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

C# 数据结构

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Panoptic FPN 全景分割
下一篇:【预告】【行业会议】【2019年9月20-21日】安可数据库论坛 · 北京
相关文章