C#数据结构与算法系列(十二):递归(Recursion)

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

2.规则

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

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

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

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

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

3.递归能解决什么问题

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

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

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

C#数据结构与算法系列(十二):递归(Recursion)

 

 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)); } }

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zwgjxf.html