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对 ...
随机推荐
- 入门5:PHP 语法基础——流程控制
一.if...else 语句 if( ) else{ } 如果 .... 就.... 否则.... if(判断){ 判断成立 则执行该表达式 }else{ 如果上方判断都不成立 则执行该表达式 } i ...
- shell排序算法
今天看<The C Programming Language>的时候看到了shell排序算法, /* shellsort: sort v[0]...v[n-1] into increasi ...
- iscc2016-basic-心灵鸡汤
用winhex打开发现 ISCCCongratulations! You need remember: DEath IS JUST A PaRT oF lIFE,sOMeTHInG wE'RE aLL ...
- winform布局格式
一.默认布局 ★可以加panel,也可以不加: ★通过鼠标拖动控件的方式,根据自己的想法布局.拖动控件的过程中,会有对齐的线,方便操作: ★也可选中要布局的控件,在工具栏中有对齐工具可供选择,也有调整 ...
- Gridview BottomPagerRow添加自定义控件
pager.ascx public partial class pager : System.Web.UI.UserControl{ } .aspx protected pager ctl; prot ...
- nutch,hbase,zookeeper兼容性问题
nutch-2.1使用gora-0.2.1, gora-0.2.1使用hbase-0.90.4,hbase-0.90.4和hadoop-1.1.1不兼容,hbase-0.94.4和gora-0.2.1 ...
- HDU1106
为了给学弟学妹讲课,我又水了一题-- 1: import java.util.*; 2: import java.io.*; 3: 4: public class HDU1106 5: { 6: pu ...
- 【Java】WebService教程
Web Services Web Services可以将应用程序转换为网络应用程序. Web Services可以被其他应用程序利用. 基本的Web Services平台是XML + HTTP. WS ...
- Extjs4中tabPanel
好文章引用:Extjs4 TabPanel例子 感谢原作者...
- spoj-694-Distinct Substrings(后缀数组)
题意: 给定一个字符串,求不相同的子串的个数 分析: 每个子串一定是某个后缀的前缀,那么原问题等价于求所有后缀之间的不相同 的 前 缀 的 个 数 . 如 果 所 有 的 后 缀 按 照 suffix ...