让我想起了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对兔子),这些兔子地球是装不下了。
可以用三种方法实现:循环、递归、数学公式
循环楼主就自己写吧。参考如下代码:
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对兔子),这些兔子地球是装不下了。