zoukankan      html  css  js  c++  java
  • 递归

    一、概念

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

     

    二、应满足自身条件

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

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

    三、例子

    四、注意事项

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

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

    例题:

    一群羊赶到个村庄去卖,每过一个村丢失之前总数的1/2零一只,过了7个村庄之后还剩两只,问最初赶出多少只羊

     class Program

    {
    public int dgqiuyang(int cun)
    {
    int sum = 0;
    if (cun == 7)
    {
    return 2;
    }
    sum = 2*(dgqiuyang(cun + 1) + 1);
    return sum;
    }

    static void Main(string[] args)
    {

    Program hb = new Program();
    double x = hb.dgqiuyang(1);
    Console.Write("递归求羊"+x);
    Console.ReadLine();


    }
    }
    }

    例题:


    //编写递归函数求 2*4*6*……*(2n) 的结果
    public int dgqiuyang(int cun)
    {
    int sum = 0;
    if (cun == 7)
    {
    return 2;
    }
    sum = 2 * (dgqiuyang(cun + 1) + 1);
    return sum;
    }

    static void Main(string[] args)

    {
    //Program jie= new Program();

    //Console.Write("请输入一个值:");
    //int n = int.Parse(Console.ReadLine());
    //int b = jie.jie(n);
    //Console.Write(b);
    //Console.ReadLine();



    //有雌雄一对兔子,每过一个月便可繁殖雌雄各一的一对小兔子。

    //问过n个月后共有多少对兔子?

    public int t(int z)
    {
    int sh = 0;
    if (z == 1)
    {
    return 2;
    }
    sh = 2 * t(z - 1);
    return sh;
    }

    static void Main(string[] args)

    {
    //Program tt = new Program();
    //Console.Write("请输入月数:");
    //int m = int.Parse(Console.ReadLine());
    //int y = tt.t(m);
    //Console.Write(y);
    //Console.ReadLine();


    //5个候选人竞选班长:张三,李四,王五,赵六,冯七
    //班级中共有20人,20人轮流投票
    //只要不是1~5之内的视为作废
    //最后要知道谁的票数最多,当选班长

    enum Houxuanren : int
    {
    one = 1,
    two,
    three,
    four,
    five
    }


    Console.WriteLine("请输入竞选班长的代码1、2、3、4、5来分别代表 张三, 李四, 王五, 赵六, 冯七");

    int[] shuzu = new int[20];
    for (int i = 1; i <= 20; i++)
    {
    Console.Write("请第" + i + "位同学来进行投票:");
    shuzu[i - 1] = int.Parse(Console.ReadLine());
    }
    Console.WriteLine("投票结束!按下回车开始统计票数!");
    Console.ReadLine();
    int zhangsan = 0, lisi = 0, wangwu = 0, zhaoliu = 0, fengqi = 0, zuofei = 0;
    for (int i = 0; i < 20; i++)
    {
    switch (shuzu[i])
    {
    case (int)Houxuanren.one:
    zhangsan++;
    break;
    case (int)Houxuanren.two:
    lisi++;
    break;

    case (int)Houxuanren.three:
    wangwu++;
    break;

    case (int)Houxuanren.four:
    zhaoliu++;
    break;

    case (int)Houxuanren.five:
    fengqi++;
    break;
    default:
    zuofei++;
    break;
    }

    }
    if (zhangsan > lisi && zhangsan > wangwu && zhangsan > zhaoliu && zhangsan > fengqi)
    {
    Console.WriteLine("张三胜出!票数为" + zhangsan);
    }
    else if (lisi > zhangsan && lisi > wangwu && lisi > zhaoliu && lisi > fengqi)
    {
    Console.WriteLine("李四胜出!票数为" + lisi);
    }
    else if (wangwu > lisi && wangwu > zhangsan && wangwu > zhaoliu && wangwu > fengqi)
    {
    Console.WriteLine("王五胜出!票数为" + wangwu);
    }
    else if (zhaoliu > lisi && zhaoliu > wangwu && zhaoliu > zhangsan && zhaoliu > fengqi)
    {
    Console.WriteLine("赵六胜出!票数为" + zhaoliu);
    }
    else if (fengqi > lisi && fengqi > wangwu && fengqi > zhaoliu && fengqi > zhangsan)
    {
    Console.WriteLine("冯七胜出!票数为" + fengqi);
    }
    Console.WriteLine("作废的票数为:" + zuofei);
    Console.ReadLine();


    }
    }
    }

  • 相关阅读:
    【Linux】PS命令
    【Linux】多进程与多线程之间的区别
    【杂项】XML Schema和DTD的区别
    推荐一组强大的Collection类
    关于Decorator模式我的理解
    菜鸟白话设计模式系列
    PowerCollections研究: 第1弹竟就发现不少问题
    [白话设计模式] Singleton
    PowerCollection研究:第2枪小谈RemoveALL算法
    yield 关键字
  • 原文地址:https://www.cnblogs.com/zzzy0828/p/5637814.html
Copyright © 2011-2022 走看看