zoukankan      html  css  js  c++  java
  • Chapter 7. 递归

    一、概念 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();
            }

  • 相关阅读:
    api服务器思路
    利用express写api接口
    sql基础语句
    安装npm后,nrm ls 报错internal/validators.js:124 throw new ERR_INVALID_ARG_TYPE(name, ‘string‘, value)
    JavaScript垃圾回收机制和闭包
    用git clone 远程的所有分支
    面试题重点
    Linux 常用命令
    防抖函数和节流函数
    GIT PUSH 出现EVERYTHING UP-TO-DATE 解决方法
  • 原文地址:https://www.cnblogs.com/xiao55/p/5498367.html
Copyright © 2011-2022 走看看