垂耳兔的寿命分为哪几个阶段 小兔第三月起每月可生一兔
题目:有一对兔子,从出生后第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谁的拉布拉多犬丢了赶快来认领 英拉布拉多犬走失9年后与主人重逢333
- 2怎么从流浪猫妈妈身边拿走猫宝宝?流浪猫妈妈遇到好人隔天介绍给小猫314
- 3自己做铁锅炖大骨头文案,散文,炖牛骨头398
- 4猫吃了洋桔梗很兴奋为什么?洋桔梗对猫来说有毒吗106
- 5厕所里有一只小奶狗冲下下水道 小可怜,杭州一市民家小奶狗118
- 6喵星人的10种超能力你知道吗?比较乖巧的喵星人排行榜262
- 7喂猫咪时猫咪总要扑一下脚:猫咪想吃东西一直用手拍主人344
- 8狗狗的厕所哪款最实用:日本机场推出,第一款狗厕区305
- 9狗疫苗的不适反应和处理方法,关于狗狗疫苗这些干货你知道吗382
- 10陈凯歌妖猫传拍摄地址:陈凯歌新片,妖猫传曝国际及角色版海报215