垂耳兔的寿命分为哪几个阶段 小兔第三月起每月可生一兔
题目:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子对数为多少?
第一种解法:
问题分析:
第一个月是小兔子,是一对小兔子;
第二个月从小兔子变成大兔子,是一对大兔子;
第三个月大兔子生出小兔子加上本身的一对大兔子,是一对大兔子 一对小兔子 共2对兔子 1 1 = 2;
第四个月大兔子生出小兔子加上本身的一对大兔子,小兔子变成大兔子,是2对大兔子,一对小兔子,共3对兔子 2 1 = 3;
第五个月2对大兔子生出2对,小兔子长成大兔子,共5对兔子 2 3 = 5;可知每对兔子需要一个月长大,两个月才能生产;
由此可知 第三个月以后每个月的兔子对数等于前两个月的兔子对数相加。
public static void main(String[] args){ Scanner sc=new Scanner(System.in); System.out.println("请输入月份:"); int n = sc.nextInt();//可以自己设置第几个月的兔子总数 System.out.println("第" n "个月兔子总数为" fun(n)); } private static int fun(int n){ if(n==1 || n==2) return 1; else return fun(n-1) fun(n-2); }
第二种解法
问题分析:
问题剖析: 1 1 2 3 5 8 13 21 34 55 89 144(1-12个月兔子的对数),当第三个开始,数值为前两项之和
public static void main(String[] args) { Scanner sc=new Scanner(System.in); System.out.println("请输入月份:"); int[] mon = new int [sc.nextInt()];//自己设置月份 int len = mon.length;//获取数组的长度36 mon[0] = 1;//1月不生,有一对 mon[1] = 1;//2月不生,有一对 for(int i = 2; i<len;i ){//循环数组的长度,即月份 mon[i] = mon[i-1] mon[i-2];//从第2个月以后,第i个元素值等于前两项元素之和 } //System.out.println(Arrays.toString(mon));//遍历数组 System.out.println(mon.length "个月一共生了: " mon[mon.length-1] " 对兔子");//打印数组的最后一个值 }
第三种解法:
问题分析:
首先,当位数为1时返回值为1;位数为2时返回1;当位数为3时,其返回值为2;因为他们是起始值;
然后,当位数为4时,其返回值 = 3 = 2 1;
当位数为5时,其返回值 = 5 = 3 2;
当位数为6时,其返回值 = 8 = 5 3;
当位数为7时,其返回值 = 13 = 8 5;
当位数为8时,其返回值 = 21 = 13 8;
......
所以由以上可得,大于等于3的情况下,当前位数的值
f (n) = f(n-1) f(n-2)。
public static void main(String[] args) { System.out.println("请月份数:"); Scanner s = new Scanner(System.in); int n = s.nextInt(); System.out.println("第" n "个月一共有" f(n) "只兔子"); } public static int f(int n) { if(n!=1&&n!=2) { if(n!=3) { return f(n-1) f(n-2); } return 2; } else return 1; }
推荐
- 1怎么判断狗狗是否感染寄生虫?感染体外寄生虫的几率比较大187
- 2雷神4还有佳绩吗?还得从评分只有5.5的雷神4说起261
- 3盆栽柚子树不修剪会不会结果:盆栽柚子树有2个最佳修剪时间252
- 4昆明犬的4大优点谁养谁知道,这是我见过最全面的,34216
- 5盘点那些胖成猪的猫猫狗狗,蜘蛛狗,肌肉猫蜜蜂狗491
- 6植物能感知自己的存在吗?植物是否也有,鼻子110
- 7冬季水底有暗草如何钓鲫鱼?但很多人却不知道钓什么样的草438
- 8晴小晴创作的歌曲:晴小晴酷狗首唱会演绎沙漠骆驼竟唱出了温柔与小清新感觉135
- 9为什么别的狗不喜欢柯基?其实它很容易被狗排斥352
- 10固力老式门锁内部结构怎么弄?老式固力锁怎样开锁如何选购合适的门锁326