A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© xiaoya0o0o 中级黑马   /  2015-9-22 21:41  /  207 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

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

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马