- /*
- * 递归的注意事项:
- * 1.要有出口,否则就是死递归;
- * 2.次数不能太多,否则就内存溢出;
- * 3.构造方法不能递归使用;在编译时,就会编译错误;
- * 不死神兔问题案例:
- *
- * 有一对兔子,从第三个月开始,每月都会生一对小兔子;小兔子也是从第三个月开始,每月也会再生一对
- * 小兔子,问:假如兔子不死,第20个月,一共有多少对兔子?
- *
- * 月份: 1 2 3 4 5 6 .... 20
- * 兔子: 1 1 2 3 5 8 .... ? (斐波那契数列)
- *
- * 方式一:使用数组
- * [0] [1] [2] [3] [4] [5] ... [19]
- * 1 1 2 3 5 8 ... [17] + [18]
- *
- * 方式二:使用递归:
- */
- public class Demo {
- public static void main(String[] args) {
- int month = 20;
- int[] intArray = new int[month];
- for(int i = 0;i < intArray.length ; i++){
- if(i == 0 || i == 1){
- intArray[i] = 1;
- continue;
- }
- intArray[i] = intArray[i - 1] + intArray[i - 2];
- }
- System.out.println(month + " 月后,兔子一共有:" + intArray[intArray.length - 1] + " 对");
-
- System.out.println("递归求20个月兔子数:" + fib(20));
- }
-
- public static int fib(int m){
- if(m == 1 || m == 2){
- return 1;
- }
- return fib(m - 1) + fib(m - 2);
- }
- }
复制代码 |
|