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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 雨祭 中级黑马   /  2015-1-4 20:19  /  1485 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,   1.程序分析: 兔子的规律为数列1,1,2,3,5,8,13,21....

4 个回复

倒序浏览
  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.                 }
复制代码
回复 使用道具 举报
有点像斐波那契数列的规律
回复 使用道具 举报
2楼明显是大神
回复 使用道具 举报
牛牛宝 发表于 2015-1-4 21:29
有点像斐波那契数列的规律

就是斐波那契数列
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马