1.这个问题是如下的:

   有一对兔子,从出生后第3个月起,每个月都生一对兔子,小兔子长到第3个月又生一对兔子,加入兔子都不死,问第20个月兔子的对数?

分析:我们找规律

      兔子对数
第1个月:    1
第2个月:    1
第3个月:    2
第4个月:    3
第5个月:      5
第6个月:    8
……
由此可见兔子的对象数据是:
 1,1,2,3,5,8,……
• n=1或者n=2,result=1;

• n>=3,result=fun(n-1)+fun(n-2);

2. 代码实现:

 1 package com.himi.diguidemo;
 2
 3
 4 /**
 5  *
 6  *有一对兔子,从出生后第3个月起,每个月都生一对兔子,小兔子长到第3个月又生一对兔子,加入兔子都不死,问第20个月兔子的 对数?
 7  *分析:我们找规律
 8  *         兔子对数
 9  *第1个月:            1
10  *第2个月:            1
11  *第3个月:            2
12  *第4个月:            3
13  *第5个月:            5
14  *第6个月:            8
15  *……
16  *由此可见兔子的对象数据是:
17  *   1,1,2,3,5,8,……
18  *
19  * 如何实现这个程序呢?
20  *         A:数组实现
21  *         B:变量的变化实现
22  * 假如相邻的两个月的兔子对数为a,b
23  * 第1个月:   a=1,b=1
24  * 第2个月:   a=1,b=2
25  * 第3个月:   a=2,b=3
26  * 第4个月:   a=3,b=5
27  * 看到了:下一次的a是以前的b,下一次的b是以前的a+b
28  *
29  *          C:递归实现
30  */
31 public class DiGuiDemo2 {
32
33     public static void main(String[] args) {
34         //数组实现
35         int[] arr = new int[20];
36         arr[0] = 1;
37         arr[1] = 1;
38         for(int i =2; i<=arr.length-1; i++) {
39             arr[i] = arr[i-1]+arr[i-2];
40         }
41         System.out.println("数组实现---第20月兔子的对数:"+arr[19]);
42
43         System.out.println("=============================");
44         //变量的变化实现
45         int a=1;
46         int b=1;
47         for(int i=0; i<18; i++){
48             int temp =a;                //保存a的初试值
49             a = b;                      //这里的a发生了变化,而下面需要使用到a的初始值,所以上面定义了int temp = a;
50             b = temp+b;
51         }
52         System.out.println("变量的变化实现---第20月兔子的对数:"+b);
53
54         System.out.println("=============================");
55
56         //递归实现
57         System.out.println("递归实现---第20月兔子的对数:"+func(20));
58
59     }
60
61     public static int func(int n) {
62         if(n==1 || n==2) {
63             return 1;
64         }
65
66         return func(n-1)+func(n-2);
67     }
68
69 }

运行结果如下:

转载于:https://www.cnblogs.com/hebao0514/p/4850243.html

Java基础知识强化之IO流笔记13:递归之不死神兔问题(斐波那契数列)相关推荐

  1. java不死神兔总数_Java基础知识强化之IO流笔记13:递归之不死神兔问题(斐波那契数列)...

    1.这个问题是如下的: 有一对兔子,从出生后第3个月起,每个月都生一对兔子,小兔子长到第3个月又生一对兔子,加入兔子都不死,问第20个月兔子的对数? 分析:我们找规律 兔子对数 第1个月:   1 第 ...

  2. Java基础知识强化之IO流笔记42:IO流总结(图解)

    1. IO流总结(图解) 转载于:https://www.cnblogs.com/hebao0514/p/4868913.html

  3. Java基础知识强化之IO流笔记41:字符流缓冲流之复制文本文件案例02(使用 [ newLine() / readLine() ] )(重要)...

    1. 使用字符流缓冲流的特殊功能 [ newLine() / readLine() ] 需求:把当前项目目录下的a.txt内容复制到当前项目目录下的b.txt中  数据源: a.txt -- 读取数据 ...

  4. Java基础知识强化之IO流笔记32:转换流之OutputStreamWriter的使用

    1. OutputStreamWriter的使用 OutputStreamWriter(OutputStream out):根据默认编码把字节流的数据转换为字符流 OutputStreamWriter ...

  5. Java基础知识强化之IO流笔记44:IO流练习之 复制图片的 4 种方式案例

    1. 复制图片的 4 种方式案例: 分析: 复制数据,如果我们知道用记事本打开并能够读懂,就用字符流,否则用字节流. 通过该原理,我们知道我们应该采用字节流. 而字节流有4种方式,所以做这个题目我们有 ...

  6. Java基础知识强化之IO流笔记59:打印流

    1. 打印流 (1)分类: • 字节打印流   PrintStream • 字符打印流   PrintWriter (2)打印流的特点: • 只能写数据,不能读数据 • 只能操作目的地,不能操作数据源 ...

  7. Java基础知识强化之IO流笔记03:throws的方式处理异常

    1. 什么时候使用throws ? (1)定义功能方法时候,需要把出现的问题暴露出来,让调用者去处理.那么就通过throws在方法上标识. (2)有时候,我们是可以对异常进行处理的,但是又有些时候,我 ...

  8. Java基础知识强化之集合框架笔记76:ConcurrentHashMap之 ConcurrentHashMap简介

    1. ConcurrentHashMap简介: ConcurrentHashMap是一个线程安全的Hash Table,它的主要功能是提供了一组和Hashtable功能相同但是线程安全的方法.Conc ...

  9. JAVA(4)学习笔记:JVM虚拟机上的栈、大驼峰命名法和小驼峰命名法、实参和形参、重载方法、调用栈、递归练习(汉诺塔+斐波那契数列)、数组的定义、数组的初始化、增强for循环。

    接上次的博客:JAVA学习(3)--知识整理以及一些简单程序(猜数字游戏.求各种自幂数.求出一个数字的二进制位中1的个数.获取一个数二进制序列中所有的偶数位和奇数位.求公约数的多种实现方式.输入密码程 ...

最新文章

  1. python tkinter画笑脸_Python3 Tkinter基础 Canvas create_line 画实线与虚线
  2. 嵌入式小知识(累积更新)
  3. 干净卸载mysql (注册表)
  4. java超时导致oracle锁表_java – 正确的设计,以避免Oracle死锁?
  5. libevent evbuffer缓冲源码分析
  6. 小工厂规章制度_小工厂的规章制度(共8篇).doc
  7. 搭建本地LNMP开发环境(2.5)-安装vim
  8. 第二季-专题10-C语言环境初始化
  9. 全景探秘游戏设计艺术(1):游戏设计师
  10. 怎么解决每次打开Office 2013都提示配置进度
  11. 华为od面试全流程总结
  12. 求二元一次方程 的解 C语言
  13. java实现录屏功能
  14. 执行脚本错误:-bash: ./start.sh: /bin/bash^M: bad interpreter: No such file or directory
  15. Matplotlib可视化图表
  16. 服务器编程之路:进无止境(上)
  17. phalcon index.php,phalcon简易指南
  18. 程序员面试系列(2)非计算机专业程序员
  19. 数据结构笔记10-图的逻辑结构
  20. ios客户端学习-UIButton

热门文章

  1. 【STM32】DAC程序示例
  2. 【Linux系统编程】进程概述和进程号
  3. 【Linux】一步一步学Linux——test命令(252)
  4. 【STM32】 keil软件介绍--工程目标选项配置(上)
  5. 黑龙江计算机单招学校,黑龙江有名气的中专单招
  6. java 初始化log4j_java – log4j:WARN请正确初始化log4j系统
  7. openfoam211版本安装
  8. internal compiler error: Killed (program cc1plus)
  9. 关于mysql数据库的外键插入报错:Cannot add or update a child row: a foreign key constraint fails,完整性问题
  10. 先验概率、似然函数与后验概率