• C#中递归算法的总结


    递归是数学中一种重要的算法思想,在编程中也常常用到递归思想解决问题,运用递归,使代码显得更加简洁。现将总结的关于编程中使用递归的方法总结如下:

    /// <summary>
            /// 一个数组:1,1,2,3,5,8,13,21...+m,求第30位数是多少?用递归实现;
            /// </summary>
            /// <param name="n"></param>
            /// <returns></returns>
            static int Fibonacci(int n)
            {
                if (n <= 1)
                {
                    return n;
                }
                else
                {
                    return Fibonacci(n - 1) + Fibonacci(n - 2);
                }
            
            }
            /// <summary>
            /// 求两个数的最小公约数
            /// </summary>
            /// <param name="m"></param>
            /// <param name="n"></param>
            /// <returns></returns>
            static int MinDivisor(int m, int n)
            {
                if (m % n == 0)
                    return n;
                else
                    return MinDivisor(n, m % n);
            }
            /// <summary>
            /// 求一个数组中的最大值
            /// </summary>
            /// <param name="a"></param>
            /// <param name="n"></param>
            /// <returns></returns>
            static int FindMax(int[] a, int n) 
            {
                if (a == null || n > a.Length || n < 1)
                {
                    throw new ArgumentException();
                }
                if (n == 1)
                {
                    return a[0];
                }
                int max = FindMax(a, n - 1);
                if (a[n - 1] > max)
                {
                    max = a[n - 1];
                }
               return max; 
            }
            /// <summary>
            /// 求一个数组中的最大值(调用Max函数)
            /// </summary>
            /// <param name="a"></param>
            /// <param name="n"></param>
            /// <returns></returns>
            static int FindMax2(int[] a, int n) 
            { 
                if (a == null || n > a.Length || n < 1)   
                    throw new ArgumentException(); 
                if (n == 1) 
                    return a[0]; 
                return Math.Max(FindMax2(a, n - 1), a[n - 1]); 
            }  

    客户端调用代码如下:

          static void Main(string[] args)
            { 
                //int number=Convert.ToInt32(Console.ReadLine());
                //int result = Fibonacci(number);
                //Console.WriteLine(result);
                   //Console.WriteLine(MinDivisor(12, 18));
                int[] a = { 1, 210, 3, -51, 327, -58, 102300, 54343, -20, 0 }; 
                int max = FindMax2(a, a.Length);
                Console.WriteLine(max);
                Console.ReadLine();
    
               
            }

    在编程中掌握递归的思想,往往会达到事半功倍的效果!

  • 相关阅读:
    Spring Boot 定时+多线程执行
    Spring Boot + Vue Element实现Excel文件上传、解析、下载(含完整实现过程)
    立个flag,2020年比2019年产出提升10倍
    《Google工作法》读书笔记
    学习Go语言(二)快速入门
    学习Go语言(一)环境安装及HelloWorld
    WPF 自定义控件缩放
    上、下位机软件通信时,结构体的内存对齐问题
    C 语言能不能在头文件定义全局变量?
    注释格式
  • 原文地址:https://www.cnblogs.com/wangjianhui008/p/3452599.html
Copyright © 2020-2023  润新知