有一对兔子,从出生后第四个月起每个月都生一对兔子,小兔子长到第四个月后每个月又生一对兔子。假如兔子都不死,计算第十个月兔子的总数?

分析:

四个月开始生兔子,则:F(N) = f(n-1)+ f(n-3)。可以运用递归来解决问题。

如果当出生后第三个月开始生兔子: F(N) = f(n-1)+ f(n-2)

如果出生后第二个月开始生兔子:  F(N) = f(n-1)+ f(n-1) = 2*F(n-1)

如果出生后第一个月开始生: !!!一个月就会生的全宇宙都是兔子。。。。

代码:

import java.util.Arrays;
import java.util.Scanner;
public class Main {  public static int f(int n){  if(n==1 || n==2||n==3){  return 1;  }  return f(n-1)+f(n-3);  }  public static void main(String[] args) {  for (int i = 1; i < 11; i++) {  System.out.println(f(10));  }  }
}

题目:古典问题:3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?

分析:首先我们要明白题目的意思指的是每个月的兔子总对数;假设将兔子分为小中大三种,兔子从出生后三个月后每个月就会生出一对兔子,

那么我们假定第一个月的兔子为小兔子,第二个月为中兔子,第三个月之后就为大兔子,那么第一个月分别有1、0、0,第二个月分别为0、1、0,

第三个月分别为1、0、1,第四个月分别为,1、1、1,第五个月分别为2、1、2,第六个月分别为3、2、3,第七个月分别为5、3、5……

兔子总数分别为:1、1、2、3、5、8、13……

于是得出了一个规律,从第三个月起,后面的兔子总数都等于前面两个月的兔子总数之和,即为斐波那契数列。

Java代码:

生兔子问题(递归思想)相关推荐

  1. Python实例---经典问题生兔子的递归与迭代方法的实现

    Python实例-有一对兔子,从出生后的第3个月起每个月都生一对兔子.小兔子长到第3个月后每个月又生一对兔子,假设所有的兔子都不死,求解每个月的兔子总对数数量? 分析问题 前两个月都是1对兔子,第三个 ...

  2. 兔子生兔子之递归问题(递归实现斐波那契数列)

    今天给大家带来一个经典题,斐波那契数列,题目如下: //题目:有一对兔子,从出生后第3个月起每个月都生一对兔子,//小兔子长到第三个月后每个月又生一对兔子.假如兔子都不死,要求根据输入的月份输出对应兔 ...

  3. Java递归——兔子生兔子问题

    该问题与上楼梯的问题一样,是从反方向思考推导递归公式 [帕斯卡三角形] /**生兔子问题 * 问题描述: * 新诞生的兔子三个月后会每个月都会产小兔子 * 即: 1 1 2 3 5 8 13 */ p ...

  4. Java兔子生兔子问题(递归法)

    Java兔子生兔子问题(递归法) 该问题与上楼梯的问题一样,是从反方向思考推导递归公式 /**生兔子问题 * 问题描述: * 新诞生的兔子三个月后会每个月都会产小兔子 * 即: 1 1 2 3 5 8 ...

  5. 一只兔子每三个月生兔子JAVA,兔子生兔子问题

    关于兔子生兔子的算法详解 有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔 子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少? 分析: 第1个月  --  1对 第2 ...

  6. python递归算法解决兔子繁殖问题_经典生兔子问题——递归方法

    例题: 有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子.假如兔子都不死,要求输出一年内兔子的数量是多少. 分析: 该题是典型的斐波那契数列的一个实例应用. 我 ...

  7. 斐波那契生兔子问题(一月大兔子生a对,二月大兔子生b对,三月大兔子生c对。。。)

    现提出一个问题:一对兔子一个月大时可生育a对兔子,两个月大的兔子生育b对兔子,三个月大及以后的兔子生c对兔子.假设兔子不死,现有1对兔子,问N个月后有多少只兔子. 看起来这是一个递推数列的问题,要注意 ...

  8. php狼和兔子算法,PHP基于递归算法解决兔子生兔子问题php技巧

    这篇文章主要介绍了PHP基于递归算法解决兔子生兔子问题,结合实例形式分析了兔子生兔子问题的php面试题采用循环与递归两种思路的解决方法,需要的朋友可以参考下 本文实例讲述了PHP基于递归算法解决兔子生 ...

  9. C语言/C++常见习题问答集锦(六十四) 之兔子繁殖(递归与非递归)

    C语言/C++常见习题问答集锦(六十四) 之兔子繁殖(递归与非递归) 程序之美 1.C语言,计算1乘以3×5*-乘n的积,并输出结果,n值由键盘接收. #include<stdio.h>v ...

最新文章

  1. 【代码笔记】Web-CSS-CSS id和Class选择器
  2. 最强无监督行人重识别方法 Cluster Contrast ReID
  3. Java程序员从笨鸟到菜鸟之(七十四)细谈Spring(六)spring之AOP基本概念和配置详解
  4. FIND_IN_SET 精确查找
  5. http://acm.hrbeu.edu.cn/index.php?act=problemid=1001cid=19 人工湖的公路
  6. uploadify插件的使用
  7. lvm 扩展根目录_Lvm扩展根目录容量
  8. Delphi中常用字符串处理函数
  9. 基于知识引入的情感分析
  10. 小记linux如何挂载window下的共享文件
  11. Atitit 数据存储实现方案总结 提升开发效率 不要一股脑把数据塞到远程关系型数据库,会造成开发效率的降低。。根据不同的要求,选择最简化快速的方案 目录 1. 选择存储原则 2 1.1. 简单快
  12. 在word、ppt中输入矩阵转置符号
  13. Python数据库编程
  14. Camera-3A AE/AWB/AF
  15. 水星怎么设置网速最快_wifi怎样设置网速最快
  16. android 轨迹生成图,Android自定义View实现公交成轨迹图
  17. 5G技术领先的华为还是输了,小米在618热销5G手机榜居首
  18. Adobe 软件共享
  19. 拔河游戏java_奥沙利文决赛
  20. Android 开启个人热点时 获取连接人数以及连接上的设备信息

热门文章

  1. LIS系统源码 医学实验室/检验管理系统源码(LIS)LIS源码
  2. 计算机科学与技术为什么叫cs,cs是什么专业的简称
  3. mysql的隐形符号char(13),char(9),char(13)
  4. 晶振振荡电路中负性阻抗到底是什么?
  5. 立即关闭计算机的命令,谁有或者知道电脑立即关机的bat命令条令?
  6. 写手们要下岗了?百度开启AI智能写作平台
  7. JSPatch使用小记
  8. SSN:Temporal Action Detection with Structured Segment Networks
  9. 今日科技联播:人人网社交板块以2千万美元卖出,北京多牛互动接盘
  10. x58添加uefi_X58平台老台式机升级固态硬盘以及三通道内存