zoukankan      html  css  js  c++  java
  • C#算法 有一个母羊,第2年和第4年可以生一头小母羊,在第5年死去,小母羊在它出生的第2年和第4年生小母羊,第5年死去

         /// <summary>
        /// 母羊类
        /// 有一个母羊,第2年和第4年可以生一头小母羊,在第5年死去,小母羊在它出生的第2年和第4年生小母羊,第5年死去
        /// </summary>
        class Sheep
        {
            public int year;
    
            public Sheep(int year)
            {
                this.year = year;
            }
    
            /// <summary>
            /// 方法一 多函数递归
            /// 获得母羊总数目
            /// 母羊第2年和第4年可以生一头小母羊,在第5年死去。
            /// </summary>
            /// <returns></returns>
            public int GetSheep(int year)
            {
                return GetSheepofAge1(year) + GetSheepofAge2(year) + GetSheepofAge3(year) + GetSheepofAge4(year); 
            }
    
            /// <summary>
            /// 获得一岁的母羊
            /// 一岁的母羊只能是去年一岁的母羊生的母羊和去年三岁的母羊生的母羊
            /// </summary>
            /// <returns></returns>
            public int GetSheepofAge1(int year)
            {
                if (year <= 1)
                    return 1;
                else
                    return GetSheepofAge1(year - 1) + GetSheepofAge3(year - 1);
            }
    
            /// <summary>
            /// 获得二岁的母羊
            /// 二岁的母羊只能是去年一岁的母羊
            /// </summary>
            /// <param name="year"></param>
            /// <returns></returns>
            public int GetSheepofAge2(int year)
            {
                if (year <= 1)
                    return 0;
                else
                    return GetSheepofAge1(year - 1);
            }
    
            /// <summary>
            /// 获得三岁的母羊
            /// 三岁的母羊只能是去年二岁的母羊
            /// </summary>
            /// <param name="year"></param>
            /// <returns></returns>
            public int GetSheepofAge3(int year)
            {
                if (year <= 2)
                    return 0;
                else
                    return GetSheepofAge2(year - 1);       
            }
    
            /// <summary>
            /// 获得四岁的母羊
            /// 四岁的母羊只能是去年三岁的母羊
            /// </summary>
            /// <param name="year"></param>
            /// <returns></returns>
            public int GetSheepofAge4(int year)
            {
                if (year <= 3)
                    return 0;
                else
                    return GetSheepofAge3(year - 1);
            }
    }

    以上 多函数递归 算法转自http://www.mianwww.com/html/2012/03/13780.html

            /// <summary>
            /// 方法二 一个函数递归
         /// </summary>
            /// <param name="year"></param>
            /// <returns></returns>
            public int CalcSheep(int year)
            {
                if (year < 1)
                    return 0;
                if (year == 1)
                    return 1;
                if (year == 2)
                    return 2;
                if (year == 3)
                    return 3;
                else
                    return (year >= 5 ? 0 : 1) + CalcSheep(year - 1) + CalcSheep(year - 3);
            }
    Sheep sheep = new Sheep(15);
     int sheepNum = sheep.GetSheep(sheep.year);
    Console.WriteLine("方法一,第15年共有{0}只母羊!", sheepNum);
    int num = sheep.CalcSheep(sheep.year);
    Console.WriteLine("方法二,第15年共有{0}只母羊!", num);
  • 相关阅读:
    修改表的定义
    DataFrame.groupby()函数
    有限差分法
    Python之pandas库
    类:实验2家中的电视
    函数:使用函数指针操作函数
    函数:函数操作结构体通过按值传递以及按址传递,使用动态内存
    函数:使用数组名作为函数参数进行操作
    函数:使用递归实现阶乘
    函数:通过按值传递及传递结构地址操作结构
  • 原文地址:https://www.cnblogs.com/YuanSong/p/2711343.html
Copyright © 2011-2022 走看看