今有一对成年兔子,每一个月能繁殖一对幼兔,幼兔需要m个月才能成熟,请问d个月后有多少兔子?
程序输入m和d,输出number  如:
input:
2 3
output:
5

解决方案 »

  1.   

    补充  `1<=m<=10 1<=d<100
      

  2.   

    让我想起了N年前,刚学编程的时候,也就是从无数作业题开始的
    可以用三种方法实现:循环、递归、数学公式
    循环楼主就自己写吧。参考如下代码:
    class Program
    {
        static int count = 0; // 繁殖次数
        // 递归方法
        static int Calc(int m, int d, int adults, int child)
        {
            Console.WriteLine("第{0}次繁殖成年兔子{1}对,小兔子{2}对", count++, adults, child);
            if (d < m) // 周期不够繁殖
                return adults + child;
            adults += child; // 小兔成熟归为大兔子
            return Calc(m, d - m, adults, adults);
        }    static void Main(string[] args)
        {
            var m = 0;
            var d = 0;
            while (true)
            {
                Console.Write("输入几月才能成熟?(1-10)");
                if (int.TryParse(Console.ReadLine(), out m) && m > 0 && m <= 10) 
                    break;
                Console.WriteLine("格式不正确,请重新输入。");
            }
            while (true)
            {
                Console.Write("输入准备饲养几月?(1-100)");
                if (int.TryParse(Console.ReadLine(), out d) && d > 0 && d <= 100) 
                    break;
                Console.WriteLine("格式不正确,请重新输入。");
            }
            var r = Calc(m, d, 1, 0); // 递归的方法
            Console.WriteLine("兔子{0}月才能成熟,一对兔子饲养{1}月后得到{2}对({3}只)兔子", m, d, r, r * 2);
            r = (int)Math.Pow(2, d / m); // 纯数学的方法就是指数计算
            Console.WriteLine("兔子{0}月才能成熟,一对兔子饲养{1}月后得到{2}对({3}只)兔子", m, d, r, r * 2);
            Console.ReadKey();
        }
    }
    衍生的问题:这个题目没有考虑整数溢出的情况
    设“m=1 d=100”,那就是2的100次方(12676506000000000000000000000对兔子),这些兔子地球是装不下了。