我是靠谱客的博主 单身网络,最近开发中收集的这篇文章主要介绍一对兔子,出生后第二个月开始有生育能力, 每月繁殖一对小兔子。 问一对兔子一年中可繁殖出多少对兔子?,觉得挺不错的,现在分享给大家,希望可以做个参考。
概述
package com.algorithm.app.rabbit;
/***
* 一对兔子,出生后第二个月开始有生育能力,
* 每月繁殖一对小兔子。
* 问一对兔子一年中可繁殖出多少对兔子?
* 答案:144对
此题目隐含条件是:
第一个月是一对小兔子 第二个月 变成中型兔子
第三个月 才变成两对兔子
即一对大兔子
一对小兔子 零对中型兔子
不要太纠结,按照上面的思路解题即可。
*/
public class RabbitNumber {
public static void main(String[] args) {
//方法一
getNo1();
//方法二
getNo2();
}
/***
* 第二种方法无需屏蔽第一个月的逻辑,直接按照题目给出的逻辑计算即可
* 逻辑如下:
*/
private static void getNo2() {
int allNum = 0;
//小兔子
int no_x = 1;
//不能生育的中型兔子
int x_ing = 0;
//可生育的大兔子
int x_ed = 0;
for (int i = 0; i < 12; i++) {
allNum = no_x+x_ing+x_ed;
int tempNox = no_x;
int tempXing = x_ing;
int tempXed = x_ed;
//逻辑:大兔子每个月会生一对小兔子
no_x = x_ed;
//之前的小兔子转换成中型兔子
x_ing = tempNox;
//中型兔子变成大兔子的同时生育一对小兔子,自己变成大兔子
no_x += tempXing;
x_ed = tempXing+tempXed;
System.out.println("i=="+allNum);
}
}
/***
* 第一种方法,要逻辑屏蔽 第一个月
* 虽然能计算出正确的数据,但是理解上还是有些困难
* @param
*/
private static void getNo1() {
int allnum = 0;
int can = 0;
int noCan = 1;
for (int i = 0; i < 12; i++) {
can = can*2;
allnum = can+noCan;
System.out.println("i=="+allnum);
if(i != 0 ){
int temp = can;
can = can/2+noCan;
noCan = temp/2;
}
}
}
}
最后
以上就是单身网络为你收集整理的一对兔子,出生后第二个月开始有生育能力, 每月繁殖一对小兔子。 问一对兔子一年中可繁殖出多少对兔子?的全部内容,希望文章能够帮你解决一对兔子,出生后第二个月开始有生育能力, 每月繁殖一对小兔子。 问一对兔子一年中可繁殖出多少对兔子?所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复