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

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

  • 相关阅读:
    Python基础之函数与装饰器
    Python基础(字符编码与文件处理)
    周末练习(一)
    字典(习题)
    IOS代码库
    (转载)二叉树
    单链表的初始化和创建(尾插法)
    (转载)C语言单链表实现19个功能完全详解
    (转载)ios view的frame和bounds之区别(位置和大小)
    (转载)OC语法总结
  • 原文地址:https://www.cnblogs.com/wangjianhui008/p/3452599.html
Copyright © 2020-2023  润新知