/*
有一对兔子,从出生起第三个月都生一对兔子,小兔子长到第三个月都每个月又生一对兔子,假如兔子都不死,问第二十个月兔子的对数是多少
分析:我们要找出规律
第一个月: 1
第二个月: 1
第三个月: 2
第四个月: 3
第五个月: 5
第六个月: 8
。。。
由此可见,兔子对数的数据是:
1,1,2,3,5,8。。。
规则,1:从第三项开始,每一项都是前两项之和
2:并且前两项是已知的
如何实现:
1:数组实现
2:递归
*/
public class Test {
public static void main(String[] args) {
//定义数组
int[] arr = new int[20];
arr[0] = 1;
arr[1] = 1;
for (int x = 2; x < arr.length; x++) {
arr[x] = arr[x - 2] + arr[x - 1];
}
System.out.println(arr[19]);
System.out.println("------------------");
int a = 1;
int b = 1;
for (int x = 0; x < 10; x++) {
//临时变量存储上一次的a
int temp = a;
a = b;
b = temp + b;
}
System.out.println(b);
System.out.println("-------------");
System.out.println(fib(20));
}
/*
方法:返回值:int
参数列表:int n
出口条件:
第一,二个月是1,从第三个月开始,每一个月是前两个月之和。
代码就是出口加规律
*/
public static int fib(int n){
if(n==1||n==2){
return 1;
}else {
return fib(n-1)+fib(n-2);
}
}
}
6765
144
6765