菲波拉契数列(传统兔子问题)
题目:
古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?
斐波那契数:
亦称之为斐波那契数列(意大利语: Successione di Fibonacci),又称黄金分割数列、费波那西数列、费波拿契数、费氏数列,指的是这样一个数列:0、1、1、2、3、5、8、13、21、……在数学上,斐波纳契数列以如下被以递归的方法定义:F0=0,F1=1,Fn=Fn-1+Fn-2(n>=2,n∈N*),用文字来说,就是斐波那契数列列由 0 和 1 开始,之后的斐波那契数列系数就由之前的两数相加。
斐波那契数列实现方式有多种,我这里举例了三种实现。其中,递归算法最清晰,但是复杂度最高,不适合使用。
1 package programme; 2 /** 3 * 4 * 菲波拉契数列问题 语法定义:F(0)=0,F(1)=1,F(n)=F(n-1)+F(n-2)(n≥2,n∈N*) 6 * 使用递归方法 耗时:25 7 */ 8 public class FibonacciRecursion { 9 public static void main(String[] args) { 10 // Scanner scanner=new Scanner(System.in); 11 // int index=scanner.nextInt(); 12 long time=System.currentTimeMillis(); 13 int index=32; 14 for (int i = 0; i <index; i++) { 15 System.out.println("第" + (i+1) + "个月的兔子对数: " + getFibonacci(i)); 16 } 17 System.out.println("递归耗时:"+(System.currentTimeMillis()-time)); 18 } 19 20 //递归方法 21 public static int getFibonacci(int n){ 22 if(n==0||n==1) 23 return 1; 24 else 25 return getFibonacci(n-1)+getFibonacci(n-2); 26 } 27 28 }
1 package programme; 2 /** 3 * 菲波拉契数列问题 语法定义:F(0)=0,F(1)=1,F(n)=F(n-1)+F(n-2)(n≥2,n∈N*) 6 * 使用传统方式 耗时:1 7 */ 8 public class FibonacciTradition { 9 public static void main(String[] args) { 11 System.out.println("第1个月的兔子对数:1"); 12 System.out.println("第2个月的兔子对数:1"); 13 int i=32; 14 int s1=1,s2=1,count=0; 15 for (int j = 3; j<=i; j++) { 16 count=s1+s2; 17 s1=s2; 18 s2=count; 19 System.out.println("第"+j+"个月的兔子对数:"+count); 20 } 22 } 23 }
1 package programme; 2 3 import java.util.ArrayList; 4 import java.util.List; 5 6 7 /** 8 * 菲波拉契数列问题 语法定义:F(0)=0,F(1)=1,F(n)=F(n-1)+F(n-2)(n≥2,n∈N*) 11 * 使用集合方式 耗时:3 12 */ 13 public class FibonacciCollection { 14 private List<Integer> list=new ArrayList<Integer>(); 15 16 public static void main(String[] args) { 18 FibonacciCollection demo=new FibonacciCollection(); 19 int index=24; 20 demo.put(index); 21 demo.get(index); 23 } 24 private void put(int n){ 25 list.add(1); 26 list.add(1); 27 for (int i = 3; i <= n; i++) { 28 list.add(list.get(i-2)+list.get(i-3)); 29 } 30 } 31 private void get(int n){ 32 int i=0; 33 for (int j:list) { 34 System.out.println("第" + ++i + "个月的兔子对数: " + j); 35 } 36 } 37 38 39 40 }
转载于:https://www.cnblogs.com/snow1314/p/4978442.html
菲波拉契数列(传统兔子问题)相关推荐
- java - 菲波拉契数列 兔子个数
菲波拉契数列:有一对兔子,从出生后第 3 个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少? 结果演示 代码演示 package com.tw ...
- HDU5620 KK's Steel【菲波拉契数列+水题】
KK's Steel Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others) Total ...
- 菲波拉契数列的通项公式
菲波拉契数列的通项公式– F(n)=(1/√5)*{[(1+√5)/2]^n - [(1-√5)/2]^n} : 题目:hdu--1568: http://acm.hdu.edu.cn/showpro ...
- 经典算法(6)斐波拉契数列、兔子繁殖、跳台阶算法
写在前面: 我是「扬帆向海」,这个昵称来源于我的名字以及女朋友的名字.我热爱技术.热爱开源.热爱编程.技术是开源的.知识是共享的. 这博客是对自己学习的一点点总结及记录,如果您对 Java.算法 感兴 ...
- 小白兔生小白兔-菲波拉契数列问题
有一对小白兔,从出生后第3个月起每个月都生一对小白兔,小白兔长到第三个月后每个月又生一对小白兔,假如小白兔都不死,问每个月的小白兔总数为多少? 这道题是典型的斐波拉切数列问题,其特点就是从第三列开始就 ...
- UESTC 2015dp专题 E 菲波拉契数制 dp
菲波拉契数制 Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.uestc.edu.cn/#/contest/show/65 Descr ...
- 斐波拉契数列,有人买了一对小兔子,已知小兔子一个月后长成大兔子,大兔子每个月生一对小兔子,问:两年(24个月)之后,他一共有几对兔子。
[01]斐波拉契数列,有人买了一对小兔子,已知小兔子一个月后长成大兔子,大兔子每个月生一对小兔子,问:两年(24个月)之后,他一共有几对兔子. 第i月份 大兔子 小兔子 总兔子 1 0 1 1 2 1 ...
- 两个经典递归问题:菲波那契数列 + 汉诺塔
一.递归问题的处理步骤 1)抽象出递归公式:对实际问题进行部分穷举,抽象出递归关系(关键),并列出"递归表达式" 2)确定递归出口:找出递归调用终止点 二.菲波那契数列 实际问题: ...
- 信息学奥赛一本通(1188:菲波那契数列(2))
1188:菲波那契数列(2) 时间限制: 1000 ms 内存限制: 65536 KB 提交数: 28381 通过数: 10379 [题目描述] 菲波那契数列是指这样的数列: ...
最新文章
- C/C++基础面试题集锦
- java.io.CharConversionException: Not an ISO 8859-1 character:
- 基于JSP的开题报告定做
- 超图 for javascript 版本入门程序讲解
- Jenkins持续集成环境之tomcat的安装和配置
- android 编译报错,android avc 编译报错neverallow问题查找
- 开放课程管理系统(Moodle)的介绍(转)
- flash一个按钮控制动画_PLC三组灯用一个按钮控制
- There is no getter for property named 'XXX' in class 'aaa.bbb.ccc'(终极骚操作的解决方法)...
- Unet车牌分割,矫正
- 纯python好找工作吗_python现在还好找工作吗?
- 应广单片机长按开关机_单键实现单片机开关机
- java 加减乘除_加减乘除运算(Java)
- 西瓜书读书笔记(一)-绪论
- 知名卸载软件Revo Uninstaller Pro挑战Deep Freeze卸载动画视频教程
- 互联网企业的盈利模式
- ionic框架中TABS中tabs-striped条形切换问题
- Steave Jobs
- thinkpad计算机快捷键,Thinkpad笔记本键盘F1-F12功能键详细介绍
- 国债期货合约约(国债期货合约是什么)
热门文章
- 开源数据访问组件Smark.Data 1.7新增功能
- Silverlight3系列(一)Silverlight配合WCF进行数据库操作
- expect监控 雏形 scp用法
- 关于ShopEx的二次开发的目录结构及各文件功能
- Net方式实现主机与虚拟机互相ping通
- 在Asp.net core 项目中操作Mysql数据库
- XML-RPC使用手册
- 《jQuery知识点总结》(一)
- 学号20145332 《信息安全系统设计基础》实验四 驱动程序设计
- 荣耀30会升级鸿蒙吗,荣耀手机也能升级!第三批鸿蒙手机升级名单大曝光:全球第三稳了...