问题描述:
有一对兔子,从出生三个月之后,每个月都生一对兔子,小兔子长到第三个月,又出生一对,假如兔子都不死。
问在几月有多少个兔子。
在考虑这个问题的时候,最开始想到的就是递归。
但是话又说回来,这种 真~小学数学,应该可以有其他的办法。这个方法还是我在第二天有了点想法,分享给大家。
最开只有一对兔子
月份 兔子的对数
1 1对
2 1对
3 2对
4 3对
5 5对
6 8对
7 13对
8 21对
这个样子写出来,应该比较清晰一点,大家可以看到 这里是有规律的:从三月开始,每个月兔子的数量是前两个月的数量和!
当然这个规律也是比较显而易见的,但是我们可以考虑用一些比较简单的方法
如下:
我们可以定义一个数组,众所周知,数组是有下标和元素的,正好! 兔子和月份也是两个
已知这个规律,用上数组,剩下的就交给循环做去吧
public void demo03(){
Scanner input = new Scanner (System.in);
System.out.println("请输入你要查询的月数");
int n = input.nextInt(); //让用户动态输入要查询的月数
int[]arr=new int[n];// 数组的长度就 是这个月数 数组来了
arr[0]=1; //一月和二月我们都是知道的
arr[1]=1; //
//循环来了
for (int i = 2; i < arr.length; i++) {
arr[i]= arr[i-1]+arr[i-2]; //这个就是上面说的规律
}
System.out.println("第"+n+"个月有"+(arr[n-1]*2)+"只兔子");
}