不死神兔用Java实现
原题:有一个很有名的数学逻辑题叫做不死神兔问题,有一对兔子,从出生后第三个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问第十二个月的兔子对数为多少?
有三种方法
1.数组方式
2.变量的变化方式
3.递归方式
规律
规律:
第一个月 1
第二个月 1
第三个月 2
第四个月 3
第五个月 5
第六个月 7
...
第一个和第二个兔子对数都是1,从第三个月开始后面的兔子对数都是前面两个月兔子对数相加。
1.数组方式
- 思路
-
定义一个长度为20的数组:int[] arr = new int20[];
- 第一个月和第二个月对数为1;因此索引0和1的值为1;
- int[0] = 1;
- int[1] = 1;
- 从第三个月开始下月对数为这月对数之和: arr[2] = arr[0]+arr[1]
- 可以用数组向下面这样表示
arr[0]=1;
arr[1]=1;
arr[2]=arr[0]+arr[1];
arr[3]=arr[1]+arr[2];
...
下面展示源代码
public static void main(String[] args) {
int[] arr=new int[20];
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("第二十个月的兔子对数为:"+arr[19]);
}