码迷,mamicode.com
首页 > 其他好文 > 详细

Chapter 7. 递归

时间:2016-05-16 17:04:40      阅读:176      评论:0      收藏:0      [点我收藏+]

标签:

一、概念 conception

函数体内调用本函数自身,直到符合某一条件不再继续调用。

二、应满足条件 factor

1、有反复执行的过程(调用自身);

2、有跳出反复执行过程的条件(函数出口);

三、例子 example

/// <summary>
/// 计算阶乘:n!=n*(n-1)*(n-2)*(n-3)*......*1(n>0)
/// </summary>
/// <param name="i"></param>
/// <returns></returns>
     public int recursion(int i)
        {
            int sum = 0;
            if(i==1)
            {
                return i;
            }
            sum = i * recursion(i-1);
            return sum;
        }
        static void Main(string[] args)
        {
            Program digui = new Program();
            Console.WriteLine("5的阶乘:"+digui.recursion(5));
            Console.ReadLine();
        }

技术分享

四、注意事项 notice

1、递归中必须要存在一个循环结束的条件

2、递归函数的每次调用都需要栈来存储,如果次数太多的话容易造成栈溢出。

五、练习

     /// <summary>
        /// 一群羊赶到各村去卖,每过一个村丢失之前总数的一半零一只,
        /// 过了7个村之后还剩2只,问最初赶出多少只羊
        /// </summary>
        /// <param name="village"></param>
        /// <returns></returns>
        public int Sheep (int village)
        {
            int sum = 0;
            if(village==7)
            {
                return 2;
            }
            sum = 2 * (Sheep(village+1)+1);
            return sum;
        }
        static void Main(string[] args)
        {
            Program hanshu = new Program();
            double x = hanshu.Sheep(0);
            Console.WriteLine("递归求羊:"+x);
            Console.ReadLine();
        }

技术分享

Chapter 7. 递归

标签:

原文地址:http://www.cnblogs.com/xiao55/p/5498367.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!