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


    1.介绍

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

    2.规则

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

    方法的局部变量是独立的,不会相互影响,比如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("
    5的阶乘是:"+Factorial(5));
            }
        }

    3.演示图

     

  • 相关阅读:
    「SHOI2016」黑暗前的幻想乡 解题报告
    「ZJOI2016」大森林 解题报告
    「ZJOI2016」旅行者 解题报告
    「HNOI2016」树 解题报告
    「HNOI2016」序列 解题报告
    SP8791 DYNALCA
    iOS代码封装成.a文件(封装SDK)
    iOS开发总结-Xcode常见错误
    iOS开发之loadView、viewDidLoad及viewDidUnload的关系
    iOS 8 之后的动态沙盒路径
  • 原文地址:https://www.cnblogs.com/vic-tory/p/13180359.html
Copyright © 2020-2023  润新知