题目
有一对兔子,每隔三个月会产下一对小兔子,小免子每隔三个月,也会产生新的小免子,问36个月后,共有多少只兔子求解!
有一对兔子,每隔三个月会产下一对小兔子,小免子每隔三个月,也会产生新的小免子,问36个月后,共有多少只兔子求解!
解决方案 »
- 代码错误有点问题 高手帮忙看看 !!
- C#中Virtual与override分别有什么用途?
- C#中ActiveX自定义事件问题
- 新手求一个水晶报表百分比问题,望赐教,在线等
- 求正则表达式学习的电子书(100分)。
- 在C#中实现Lazyload的Singleton模式的最佳实践
- help:还是[DllImport("kernal32.dll")]问题!!!
- 请问如何检查WinForm的DataGrid中有没有数据被改动?
- 请问能否用C#实现进程的完全隐藏?
- 这个错误怎么改? socket:通常每个套接字地址(协议/网络地址/端口)只允许使用一次
- C#字符截取
- VS2010创建的WCF Web Service第一次调用很慢的问题!!!
调用Rabbit(36)
for (int i = 0; i < 36; i++)
{
hare *= 2;
}
public int Fibonacci(int i)
{
if(i < 2)
{
return 1;
}
else
{
return Fibonacci(i - 1) + Fibonacci(i - 2);
}
}
每对兔子看成一个单位,开始时有2的0次方对,第1个三月后总共有2的1次方对,第2个三月后总共有2的2次方对......(画出来是个二叉树)36个月除以3总共有12个三月,所以总共有2的12次方对兔子,再乘以2就是兔子个数
物理计算机:
调用CreateRabbits(2, 36)即可得到结果private int CreateRabbits(int rabbitNum, int month)
{
int totalRabbitNum = 0; if (month < 0)
totalRabbitNum = 0;
else if (month == 0)
totalRabbitNum = rabbitNum;
else
{
totalRabbitNum = rabbitNum * 2;//等效于totalRabbitNum = rabbitNum + (rabbitNum / 2) * 2
totalRabbitNum = this.CreateRabbits(totalRabbitNum, month - 3);
} return totalRabbitNum;
}
throw new ArgumentOutOfRangeException("rabbitNum", "兔子个数必须是2的整数倍");
{
if (rabbitNum % 2 != 0)
throw new ArgumentOutOfRangeException("rabbitNum", "兔子个数必须是2的整数倍!");
int totalRabbitNum = 0; if (month < 3)
totalRabbitNum = rabbitNum;
else
{
totalRabbitNum = rabbitNum * 2;//等效于totalRabbitNum = rabbitNum + (rabbitNum / 2) * 2
totalRabbitNum = this.CreateRabbits(totalRabbitNum, month - 3);
} return totalRabbitNum;
}