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

© Demo_黑马 中级黑马   /  2016-5-23 21:44  /  352 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文


* 故事得从西元1202年说起,话说有一位意大利青年,名叫斐波那契。
* 在他的一部著作中提出了一个有趣的问题:假设一对刚出生的小兔一个月后就能长成大兔,再过一个月就能生下一对小兔,并且此后每个月都生一对小兔,一年内没有发生死亡,
* 问:一对刚出生的兔子,一年内繁殖成多少对兔子?
* 1 1 2 3 5 8 13
* 第一个月一对小兔子                                   1
* 第二个月一对大兔子                                   1
* 第三个月一对大兔子生了一对小兔子         2
* 第四个月一对大兔子生了一对小兔子
*              一对小兔子长成大兔子                  3
* 第五个月两对大兔子生两对小兔子   
*              一对小兔子长成大兔子                  5
  1. package com.heima.test;
  2. public class Test5 {
  3.         /**
  4.          * * 不死神兔
  5.         * 故事得从西元1202年说起,话说有一位意大利青年,名叫斐波那契。
  6.         * 在他的一部著作中提出了一个有趣的问题:假设一对刚出生的小兔一个月后就能长成大兔,再过一个月就能生下一对小兔,并且此后每个月都生一对小兔,一年内没有发生死亡,
  7.         * 问:一对刚出生的兔子,一年内繁殖成多少对兔子?
  8.         * 用递归的方法实现:
  9.         * 1 1 2 3 5 8 13 21
  10.         * 1 = fun(1)
  11.         * 1 = fun(2)
  12.         * 2 = fun(1) + fun(2)
  13.         * 3 = fun(2) + fun(3)
  14.          */
  15.         public static void main(String[] args) {
  16.                 //demo1();
  17.                 System.out.println(fun(8));
  18.         }

  19.         public static void demo1() {
  20.                 //用数组做不死神兔
  21.                 int[] arr = new int[8];
  22.                 //数组中第一个元素和第二个元素都为1
  23.                 arr[0] = 1;
  24.                 arr[1] = 1;
  25.                 //遍历数组对其他元素赋值
  26.                 for(int i = 2; i < arr.length; i++) {
  27.                         //arr[2] = arr[1]+arr[0];//由简单到复杂,有特殊到一般
  28.                         arr[i] = arr[i - 2] + arr[i - 1];
  29.                 }
  30.                 //如何获取最后一个数
  31.                 System.out.println(arr[arr.length - 1]);
  32.         }

  33.         /*
  34.          * 用递归求斐波那契数列
  35.          */
  36.         public static int fun(int num) {
  37.                 if(num == 1 || num == 2) {
  38.                         return 1;
  39.                 }else {
  40.                         return fun(num - 2) + fun(num - 1);
  41.                 }
  42.         }
  43. }
复制代码



0 个回复

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