Java基础知识强化之IO流笔记13:递归之不死神兔问题(斐波那契数列)
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. 代码实现:
package com.himi.diguidemo; /**
*
*有一对兔子,从出生后第3个月起,每个月都生一对兔子,小兔子长到第3个月又生一对兔子,加入兔子都不死,问第20个月兔子的 对数?
*分析:我们找规律
* 兔子对数
*第1个月: 1
*第2个月: 1
*第3个月: 2
*第4个月: 3
*第5个月: 5
*第6个月: 8
*……
*由此可见兔子的对象数据是:
* 1,1,2,3,5,8,……
*
* 如何实现这个程序呢?
* A:数组实现
* B:变量的变化实现
* 假如相邻的两个月的兔子对数为a,b
* 第1个月: a=1,b=1
* 第2个月: a=1,b=2
* 第3个月: a=2,b=3
* 第4个月: a=3,b=5
* 看到了:下一次的a是以前的b,下一次的b是以前的a+b
*
* C:递归实现
*/
public class DiGuiDemo2 { public static void main(String[] args) {
//数组实现
int[] arr = new int[20];
arr[0] = 1;
arr[1] = 1;
for(int i =2; i<=arr.length-1; i++) {
arr[i] = arr[i-1]+arr[i-2];
}
System.out.println("数组实现---第20月兔子的对数:"+arr[19]); System.out.println("=============================");
//变量的变化实现
int a=1;
int b=1;
for(int i=0; i<18; i++){
int temp =a; //保存a的初试值
a = b; //这里的a发生了变化,而下面需要使用到a的初始值,所以上面定义了int temp = a;
b = temp+b;
}
System.out.println("变量的变化实现---第20月兔子的对数:"+b); System.out.println("============================="); //递归实现
System.out.println("递归实现---第20月兔子的对数:"+func(20)); } public static int func(int n) {
if(n==1 || n==2) {
return 1;
} return func(n-1)+func(n-2);
} }
运行结果如下:

Java基础知识强化之IO流笔记13:递归之不死神兔问题(斐波那契数列)的更多相关文章
- Java基础知识强化之IO流笔记17:FileOutputStream构造方法使用
1. 可以参照之前写的笔记: Android(java)学习笔记167:Java中操作文件的类介绍(File + IO流) 2. FileOutputStream(常用的)构造方法: FileOu ...
- Java基础知识强化之IO流笔记71:NIO之 NIO的(New IO流)介绍
1. I/O 简介 I/O ( 输入/输出 ):指的是计算机与外部世界或者一个程序与计算机的其余部分的之间的接口.它对于任何计算机系统都非常关键,因而所有 I/O 的主体实际上是内置在操作系统中的. ...
- Java基础知识强化之IO流笔记68:Properties和IO流集合使用
1. Properties和IO流集合使用 这里的集合必须是Properties集合: public void load(Reader reader):把文件中的数据读取到集合中 public v ...
- Java基础知识强化之IO流笔记66:Properties的概述 和 使用(作为Map集合使用)
1. Properties的概述 Properties:属性集合类.是一个可以和IO流相结合使用的集合类. 该类主要用于读取以项目的配置文件(以.properties结尾的文件 和 xml文件). ...
- Java基础知识强化之IO流笔记22:FileInputStream / FileOutputStream 复制文本文件案例1
1. 使用字节流FileInputStream / FileOutputStream 复制文本文件案例: 分析: (1)数据源:从哪里来 a.txt -- 读取数据 -- FileInpu ...
- Java基础知识强化之IO流笔记16:IO流的概述和分类
1. IO流的分类 流向: (1)输入流:读取数据到内存 (2)输出流:写入数据到硬盘(磁盘) 操作的数据类型: (1)字节流:操作的数据是字节 ...
- Java基础知识强化之IO流笔记01:异常的概述和分类
IO流操作的时候会出现很多问题,java中叫作异常,所以我们先介绍一下异常: 1. 程序的异常:Throwable(Throwable类是java中所有异常或错误的超类) (1)严重问题:Error ...
- Java基础知识强化之IO流笔记42:IO流总结(图解)
1. IO流总结(图解)
- Java基础知识强化之IO流笔记15:递归之删除带内容的目录案例
1. 需求:递归删除带内容的目录 分析: (1)封装目录 (2)获取该目录下的所有文件或者文件夹的File数组 (3)遍历该File数组,得到每一个File对象 (4)判断该File对 ...
随机推荐
- C#中&与&&的区别
刚刚翻书发现这个问题,在网上找了一下,我的理解吧. 他俩的区别就是“&”和“|”不执行短路计算,而&&和||执行了短路计算. &不执行短路计算 ——————表达式A&a ...
- UNIX Filesystems - Evolution Design and Implementation.pdf
UNIX Filesystems - Evolution Design and Implementation.pdf
- JSP 2秒跳转到首页
<%@ page contentType="text/html;charset=utf-8" pageEncoding="utf-8"%><h ...
- Entity Framework OData filter inherit
过滤继承对象 TPH 的情况 EF : return Task.FromResult<IQueryable<Parent>>( query.OfType<ChildA&g ...
- 智能硬件开发如何选择低功耗MCU
本文将市场上典型的低功耗MCU系列进行了比较,分析得出基于ARM. Cortex M0+内核的MCU系列最适合穿戴式医疗设备的开发.设备开发者当密切关注其发展动向,结合现有的市场需求.产品体系的构建和 ...
- 轮值CEO胡厚崑:到2025年所有的企业都将用到云(云的2.0时代,会有几千朵云几万朵云升起来,这将产生不同的技术模式、商业模式、思维模式)
2016年09月04日 07:38 中国经营报 李凡 在全国工商联“2016年中国民营企业500强”排行榜上夺得头把交椅的华为,向外界描绘了面向未来进一步做大做强的路径. 华为创始人任正非于201 ...
- bootchart--检测linux启动性能的软件
bootchart--检测linux启动性能的软件 摘自http://www-128.ibm.com/developerworks/library/l-boot-faster/index.html?c ...
- 图论(费用流):BZOJ 4514 [Sdoi2016]数字配对
4514: [Sdoi2016]数字配对 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 820 Solved: 345[Submit][Status ...
- interview material
Articles Recommended: Steve Yegge – Get That Job at Google [web] Carlos Bueno – Get That Job at Face ...
- QDomDocument Access violation writing location
今天犯了一个非常2的错误! 为了将面板参数保存起来,选择用QDomDocument构造Dom树,然后用doc.toString()方法返回符合xml格式的QString.如: QString CutF ...