zoukankan      html  css  js  c++  java
  • [转]C#算法 有一个农场有一头成年母牛,每三个月后一头小牛,小牛一年后长大,长大后每三个月又可以生一头小牛,如此循环,问n年后农场一共有多少牛?

        /// <summary>
        /// 母牛
        /// 有一个农场有一头成年母牛,每三个月后一头小牛,小牛一年后长大,长大后每三个月又可以生一头小牛,
        /// 如此循环,问n年后农场一共有多少牛?
        /// </summary>
        class Cattle
        {
            public int year;
            public int timeUint;//时间单位(3个月为一个单位)
            public int initialNum;
    
            public Cattle(int year)
            {
                this.year = year;
                this.timeUint = year * 4;
                //第一头母牛和它生的小母牛,为初始值。(每三个月生一头小牛,一年生4头小牛)
                this.initialNum = year * 4 + 1;
            }
    
            /// <summary>
            /// 方法一
            /// </summary>
            /// <param name="timeunit"></param>
            /// <param name="num"></param>
            public void GetCattle(int timeunit,ref int num )
            {
                //小牛生小牛需要5个时间单位。(小牛一年后长大,长大后每三个月又可以生一头小牛)
                //即拥有生育能力的小牛比上一代少5头。
                int nextGeneration = timeunit - 5;
                for (int i = nextGeneration; i > 0; i--)
                {
                    num += i;//下一代的数目
                    GetCattle(i, ref num);//下下一代
                }
            }
    
            /// <summary>
            /// 方法二 
            /// </summary>
            /// <param name="time">时间单位</param>
            /// <returns></returns>
            public int CalcCattle(int time)
            {
                if (time <= 5)
                    return time + 1;
                else
                    return CalcCattle(time - 1) + CalcCattle(time - 5);
            }
    
        }

    主函数

                do
                {
                    Console.WriteLine("请输入时间:");
                    int n = Convert.ToInt32(Console.ReadLine());
                    Cattle cattle = new Cattle(n);
                    cattle.GetCattle(cattle.timeUint, ref cattle.initialNum);
                    Console.WriteLine("方法一,第{0}年母牛的数量为{1}", n, cattle.initialNum);
                    int num = cattle.CalcCattle(cattle.timeUint);
                    Console.WriteLine("方法二,第{0}年母牛的数量为{1}", n, num);
                    Console.WriteLine("是否继续,Y/N ?");
                }
                while (Console.ReadLine().ToLower() == "y");
  • 相关阅读:
    格式化输出及基本运算符
    初识python
    项目: python爬虫 福利 煎蛋网妹子图
    mycat重启报错Failed to connect to the Wrapper at port解决方法
    使用nginx加zuul配置
    mycat登录报错Host 'XXX' is blocked because of many connection errors的另一种解决思路
    mycat查表报错Invalid DataSource:0解决方法
    《JUnit实战(第2版)》读书笔记
    博客园的博客积分与排名查看方法
    橄榄球教练不应兼任产品拥有者(译)
  • 原文地址:https://www.cnblogs.com/YuanSong/p/2711310.html
Copyright © 2011-2022 走看看