黑马程序员技术交流社区

标题: 求解一个古典问题?? [打印本页]

作者: 雨祭    时间: 2015-1-4 20:19
标题: 求解一个古典问题??
古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,   1.程序分析: 兔子的规律为数列1,1,2,3,5,8,13,21....
作者: (_演绎、青春    时间: 2015-1-4 21:20
  1.         public static void main(String[] args){
  2.                         // 用数组做
  3.                         int[] arr = new int[20];
  4.                         arr[0] = 1;
  5.                         arr[1] = 1;

  6.                         // arr[2] = arr[0] + arr[1];
  7.                         // arr[3] = arr[1] + arr[2];
  8.                         // arr[4] = arr[2] + arr[3];
  9.                         // ...
  10.                         // arr[19] = arr[17]+arr[18]
  11.                         for (int x = 2; x < arr.length; x++) {
  12.                                 arr[x] = arr[x - 2] + arr[x - 1];
  13.                         }
  14.                         System.out.println(arr[19]); // 6765
  15. System.out.println("------------------------------------------------------------");
  16.                         // 变量的交换实现
  17.                         int a = 1;
  18.                         int b = 1;
  19.                         for (int x = 0; x < 18; x++) {
  20.                                 // 定义临时变量,记录以前的a
  21.                                 int temp = a;
  22.                                 a = b;
  23.                                 b = temp + b;
  24.                         }
  25.                         System.out.println(b);
  26.                         System.out.println("------------------------------------------------------------");

  27.                         // 用递归实现
  28.                         System.out.println(fib(20));
  29.                 }

  30.                 /*
  31.                  * 递归其实就是方法调用方法本身: 假设fib(n)表示第n个月的兔子对数。 第n-1个月和第n-2个月的兔子对数:
  32.                  * fib(n-1),fib(n-2)
  33.                  */
  34.                 public static int fib(int n) {
  35.                         if (n == 1 || n == 2) {
  36.                                 return 1;
  37.                         } else {
  38.                                 return fib(n - 2) + fib(n - 1);
  39.                         }
  40.                 }
复制代码

作者: 牛牛宝    时间: 2015-1-4 21:29
有点像斐波那契数列的规律
作者: 只会金克斯    时间: 2015-1-4 22:11
2楼明显是大神
作者: zhangyaya    时间: 2015-1-4 22:33
牛牛宝 发表于 2015-1-4 21:29
有点像斐波那契数列的规律

就是斐波那契数列




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2