java 兔子繁殖问题_兔子繁殖问题

2023-05-16

/*兔子繁殖问题。

设有一对新生的兔子,从第三个月开始他们每个月都生一对兔子,新生的兔子从第三个月开始又每个月生一对兔子。

按此规律,并假定兔子没有死亡,20个月后共有多少个兔子?要求编写为控制台程序。*/

/*解题思路

斐波那契数列问题

f(1) = 1(第1个月有一对兔子)

f(2) = 1(第2个月还是一对兔子)

f(3) = 2(原来有一对兔子,第3个开始,每个月生一对兔子)

f(4) = 3(原来有两对兔子,有一对可以生育)

f(5) = 5(原来有3对兔子,第3个月出生的那对兔子也可以生育了,那么现在有两对兔子可以生育)

f(6) = 8(原来有5对兔子,第4个月出生的那对兔子也可以生育了,那么现在有3对兔子可以生育)

..............

由以上可以看出,第n个月兔子的对数为

f(n) = f(n - 1) + f(n - 2);

f(n-1)是上个月的兔子数量,是原来有的。

f(n-2)是可以生育的兔子数,即多出来的数量。第n-2个月开始后的第3个月是第n个月,此时第n-2个月时的兔子都可以生育了。

程序如下:*/

import java.util.*;

public class 兔子繁殖问题 {

// 方法一:采用斐波那契数递归思想

public static int f(int n) {

if (n == 1 || n == 2)

return 1;

else

return f(n - 1) + f(n - 2);

}

// 方法二:为了再提高执行效率,可以采用打表思想

public static int f[]=new int[1000];

public static int f2(int n) {

for (int i = 1; i < n; i++)

f[i] = i > 2 ? f[i - 2] + f[i - 1] : 1;

return f[n] = n > 2 ? f[n - 2] + f[n - 1] : 1;

}

// 方法三:为了节省空内存间,可采用迭代思想

static int f3(int n) {

int a, b, sum;

a = b = sum = 1;

if (n == 1 || n == 2)

return 1;

else {

for (int i = 3; i <= n; i++) {

sum = a + b;

a = b;

b = sum;

}

return sum;

}

}

// 方法四:这是蓝桥杯一填空题,模拟母牛生产过程,效率低的可怕,想吐槽一下

private int age;

public 兔子繁殖问题 afterYear() {

age++;

return age > 2 ? new 兔子繁殖问题() : null;

}

public static void f4(int n) {

List list = new ArrayList();

list.add(new 兔子繁殖问题());

for (int i = 0; i < n; i++) {

int cowCount = list.size();

for (int j = 0; j < cowCount; j++) {

兔子繁殖问题 rabbit = list.get(j).afterYear();

if (rabbit != null) {

list.get(j).afterYear();

list.add(rabbit);

}

}

}

System.out.println("第" + n + "个月有兔子" + list.size() + "只");

}

public static void main(String[] args) {

long start = System.currentTimeMillis();

for (int i = 1; i < 30; i++) {

// System.out.println("第" + i + "个月有兔子" + f(i) + "只");

System.out.println("第" + i + "个月有兔子" + f2(i) + "只");

// System.out.println("第" + i + "个月有兔子" + f3(i) + "只");

// f4(i);

}

double end = System.currentTimeMillis();

double sumTime = (end - start) / 1000.0;

System.out.println("执行时间为:" + sumTime + "秒");

}

}

运行结果

方法一:

第1个月有兔子1只

第2个月有兔子1只

第3个月有兔子2只

第4个月有兔子3只

第5个月有兔子5只

第6个月有兔子8只

第7个月有兔子13只

第8个月有兔子21只

第9个月有兔子34只

第10个月有兔子55只

第11个月有兔子89只

第12个月有兔子144只

第13个月有兔子233只

第14个月有兔子377只

第15个月有兔子610只

第16个月有兔子987只

第17个月有兔子1597只

第18个月有兔子2584只

第19个月有兔子4181只

第20个月有兔子6765只

第21个月有兔子10946只

第22个月有兔子17711只

第23个月有兔子28657只

第24个月有兔子46368只

第25个月有兔子75025只

第26个月有兔子121393只

第27个月有兔子196418只

第28个月有兔子317811只

第29个月有兔子514229只

执行时间为:0.009秒

方法二

第1个月有兔子1只

第2个月有兔子1只

第3个月有兔子2只

第4个月有兔子3只

第5个月有兔子5只

第6个月有兔子8只

第7个月有兔子13只

第8个月有兔子21只

第9个月有兔子34只

第10个月有兔子55只

第11个月有兔子89只

第12个月有兔子144只

第13个月有兔子233只

第14个月有兔子377只

第15个月有兔子610只

第16个月有兔子987只

第17个月有兔子1597只

第18个月有兔子2584只

第19个月有兔子4181只

第20个月有兔子6765只

第21个月有兔子10946只

第22个月有兔子17711只

第23个月有兔子28657只

第24个月有兔子46368只

第25个月有兔子75025只

第26个月有兔子121393只

第27个月有兔子196418只

第28个月有兔子317811只

第29个月有兔子514229只

执行时间为:0.002秒

方法三:

第1个月有兔子1只

第2个月有兔子1只

第3个月有兔子2只

第4个月有兔子3只

第5个月有兔子5只

第6个月有兔子8只

第7个月有兔子13只

第8个月有兔子21只

第9个月有兔子34只

第10个月有兔子55只

第11个月有兔子89只

第12个月有兔子144只

第13个月有兔子233只

第14个月有兔子377只

第15个月有兔子610只

第16个月有兔子987只

第17个月有兔子1597只

第18个月有兔子2584只

第19个月有兔子4181只

第20个月有兔子6765只

第21个月有兔子10946只

第22个月有兔子17711只

第23个月有兔子28657只

第24个月有兔子46368只

第25个月有兔子75025只

第26个月有兔子121393只

第27个月有兔子196418只

第28个月有兔子317811只

第29个月有兔子514229只

执行时间为:0.002秒

方法四:

第1个月有兔子1只

第2个月有兔子1只

第3个月有兔子2只

第4个月有兔子3只

第5个月有兔子5只

第6个月有兔子8只

第7个月有兔子13只

第8个月有兔子21只

第9个月有兔子34只

第10个月有兔子55只

第11个月有兔子89只

第12个月有兔子144只

第13个月有兔子233只

第14个月有兔子377只

第15个月有兔子610只

第16个月有兔子987只

第17个月有兔子1597只

第18个月有兔子2584只

第19个月有兔子4181只

第20个月有兔子6765只

第21个月有兔子10946只

第22个月有兔子17711只

第23个月有兔子28657只

第24个月有兔子46368只

第25个月有兔子75025只

第26个月有兔子121393只

第27个月有兔子196418只

第28个月有兔子317811只

第29个月有兔子514229只

执行时间为:0.157秒

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

java 兔子繁殖问题_兔子繁殖问题 的相关文章

  • Go——反射规则

    反射规则 Value Type和类型实例之间的相互转化如下图 xff1a 1 反射API 从实例到Value 通过实例获取Value对象 xff0c 直接使用reflect ValueOf 函数 例如 xff1a span class to
  • 转载 matlab矩阵数组常用操作

    一 length 返回矩阵最长维的的长度 ndims 返回维数 numel 返回矩阵元素个数 size 返回每一维的长度 xff0c rows cols 61 size A 矩阵块操作 1 repmat 数组块状复制 2 blkdiag 对
  • 微微一笑很倾城(2)

    微微一笑很倾城 正文 第30章 组队前 xff0c 雷神妮妮想死 组队后 xff0c 看到队伍里那一排ID xff0c 雷神妮妮瞬间回光返照HP全满了 就像老话说的那样 xff0c 一个妮妮被雷劈了 xff0c 千万个妮妮在电闪雷鸣中站起来
  • Get the Job You Want(大学英语综合教程4课文)

    UNIT3 1 Harvey Mackay who runs his own company often interviews applicants for jobs Here he lets us into the secret of w
  • Debian9.5 VNC Server远程桌面配置

    VNC概述 VNC Virtual Network Console 是虚拟网络控制台的缩写 VNC 是一款优秀的远程控制工具软件 xff0c 由著名的 AT amp T 的欧洲研究实验室开发的 VNC 是在基于 UNIX 和 Linux操作
  • 嵌入式常用的英文缩写词汇

    原文地址 xff1a https wenku baidu com view 9d4051f4700abb68a982fb4e html 嵌入式常见英文缩写和英文词汇 搜集中 英文缩写 ARM xff1a Advanced RISC Mach
  • 先安装VS2017再安装VS2015遇到的CMake问题

    先安装了VS2017 xff0c 后来有需求安装VS2015 xff0c 安装VS2015的时候遇到下图问题 xff0c 但是控制面板里面看不到Microsoft Visual C 43 43 2015 Redistributable的项目
  • 粒子群算法优化BP生物能神经网络

    定义 xff1a 粒子群中每个粒子的位置表示BP神经网络当前迭代中权值的集合 xff0c 每个粒子的维数由网络中起连接作用的权值的数量和阈值个数决定 xff0c 以给定训练样本集的神经网络输出误差作为神经网络训练问题的适应度函数 xff0c
  • 实现分布式锁技术:Redisson

    1 需求 Spring分布式项目涉及到定时任务 xff0c 目前解决方案 xff1a xff08 1 xff09 集成quartz xff1b xff08 2 xff09 集成redisson xff0c 由于集成quartz需要涉及到数据
  • nginx支持websocket及websocket部分原理介绍

    nginx支持websocket及websocket部分原理介绍 最近ipc通过websocket与server进行通行 xff0c 经过无法通过nginx进行反向代理 xff0c 只有直连nodejs端口 而且部署到阿里云用了slb之后同
  • Windows下分布式环境搭建以及简单测试

    环境配置 xff1a 解压文件 xff1a Nginx服务器和Tomcat服务器 Tomcat服务器配置 xff1a xff08 conf server xml xff09 Nginx配置 xff1a xff08 conf nginx co
  • Go——Inject库

    1 依赖注入和控制反转 在介绍inject之前先简单介绍 依赖注入 和 控制反转 的概念 正常情况下 xff0c 对函数或方法的调用是调用方的主动直接行为 xff0c 调用方清楚地知道被调的函数名是什么 xff0c 参数有哪些类型 xff0
  • 浅谈SpringBoot核心注解原理

    SpringBoot核心注解原理 今天跟大家来探讨下SpringBoot的核心注解 64 SpringBootApplication以及run方法 xff0c 理解下springBoot为什么不需要XML xff0c 达到零配置 首先我们先
  • Quartus II和Modelsim的联合仿真(详细)

    这篇文章不需要在modelsim中建库 映射 建工程等一些繁琐的步骤 xff0c 直接使用modelsim中的默认work库 使用quartus 43 modelsim联合仿真 首先推荐一篇文章 http www cnblogs com e
  • requests.post处理Content-Type: multipart/form-data的请求

    前几天遇到一个需求 xff0c 要调用一个接口发送请求 xff0c 抓包之后得到的数据是这样的 上网看了一些资料得知 xff0c 原来这个接口的数据是通过multipart form data格式传过去的 xff0c multipart f
  • 上一步,下一步(撤销和恢复)

    var data 61 data count 61 0 data list 61 function regain function handleSaveCss 获取workspace body里面的内容 var c 61 34 worksp
  • Ubuntu下dpkg安装软件遇到包依赖问题的处理方法

    造冰箱的大熊猫 64 cnblogs 2019 9 10 向灵魂工程师致敬 xff01 在Ubuntu环境下通过dpkg命令安装deb包时 xff0c 如果遇到包依赖问题 xff0c 如 sudo dpkg i xxx deb Readin
  • Ubuntu18优化桌面版的运行速度

    一 刚开始使用Ubuntu18后 xff0c 感觉开机和运行速度都不理想 xff0c 通过改变一些配置可以提高下用户体验感 二 改变一些配置 a 使用Preload预加载 sudo apt install preload y b 禁用不必要
  • Debian安装mplayer,解决没有声音及声卡独占问题

    通过软件中心可以安装Gnome mplayer 本来以为这样这个播放器已经是 万能 的了 xff0c 但是最近下载了几个 mkv的电影 却发现Gnome mplayer没有办法打开 感觉很失望 在网上找了一番后 说只要下载源代码自己安装就行
  • CentOS7中安装MySQL5.7

    安装必要的组件 yum install y autoconf automake imake libxml2 devel expat devel cmake gcc gcc c 43 43 libaio libaio devel bzr bi

随机推荐

  • 20190708新的开始

    题目描述 发展采矿业当然首先得有矿井 xff0c 小 FF 花了上次探险获得的千分之一的财富请人在岛上挖了 n 口矿井 xff0c 但他似乎忘记考虑的矿井供电问题 为了保证电力的供应 xff0c 小 FF 想到了两种办法 xff1a 在这一
  • Debian安装JDK

    sudo tar zxvf jdk 8u60 linux x64 tar gz C usr local vi bashrc export JAVA HOME 61 usr local jdk1 8 0 60 export JRE HOME
  • Go——多值赋值和短变量声明

    1 多值赋值 可以一次性声明多个变量 xff0c 并可以在声明时赋值 xff0c 而且可以省略类型 xff0c 但必须遵守一定的规则要求 xff0c 具体看下面的示例 如下都是合法的 span class token comment 相同类
  • 「一本通 1.2 练习 2」扩散(loj10015)

    题目描述 一个点每过一个单位时间就会向 4 个方向扩散一个距离 xff0c 如图所示 xff1a 两个点 a b 连通 xff0c 记作 e a b xff0c 当且仅当 a b 的扩散区域有公共部分 连通块的定义是块内的任意两个点 u v
  • .db文件打开方式

    有时在工作中 xff0c 数据库格式db后缀的格式 xff0c 直接是打不开的 xff0c 所以我这里使用了数据库管理工具 xff0c 步骤如下 1 在电脑安装 Navicat Premium xff0c 安装后在桌面生成图标 xff0c
  • MathType的配置问题;将word中的公式转换为mathtype格式失败,缺少OMML2MML.XSL

    安装MathType后打开word报错 打开会出现以下问题 xff1a 首先 xff0c 把startup添加到word的信任中心 xff1a 要确保路径被office信任 依次打开word gt 文件 gt 选项 gt 信任中心 gt 信
  • XMPP系列(四)---发送和接收文字消息,获取历史消息功能

    今天开始做到最主要的功能发送和接收消息 获取本地历史数据 先上到目前为止的效果图 xff1a 首先是要在XMPPFramework h中引入数据存储模块 xff1a 聊天记录模块的导入 import 34 XMPPMessageArchiv
  • linux新增磁盘后,用fdisk等命令查询不到

    ls sys class scsi host xff08 会看到有host0 host1 hostN xff0c 对每个host进行如下操作 xff09 echo 34 34 gt sys class scsi host host0 sca
  • ubuntu上源码编译安装mysql5.7.27

    一 查看操作系统环境和目录结构 xff0c 并创建mysql用户和组 xff0c 以及规划安装mysql所需要的目录 cat etc issue 查看发行版本信息 xff1a cat proc version 查看正在运行的内核版本信息 u
  • (转-收集)MSSQL手工注入语句集合

    and exists select from sysobjects 判断是否是MSSQL and exists select from tableName 判断某表是否存在 tableName为表名 and 1 61 select 64 6
  • 滚动视图 UIScrollView

    UIScrollView xff1a 提供可以显 示 大于应 用窗 口的内容功能的控件 用户可以通过 手势使内容滚动和缩放 从 而查 看全部内容 初始化一个UIScrollView的对象 1 UIScrollView scroll 61 U
  • 基于steam的游戏销量预测 — PART 1 — 爬取steam游戏相关数据的爬虫

    语言 xff1a python 环境 xff1a ubuntu 爬取内容 xff1a steam游戏标签 xff0c 评论 xff0c 以及在 steamspy 爬取对应游戏的销量 使用相关 xff1a urllib xff0c lxml
  • WechatHelper

    using System using System Collections Generic using System Configuration using System IO using System Linq using System
  • Go——range复用临时变量

    range复用临时变量 span class token keyword package span main span class token keyword import span span class token string 34 s
  • cf 1169 C Increasing by Modulo

    cf 1169 C Increasing by Modulo 题意 给你一个n个数字的序列 xff0c 有一个操作是选其中的一些数字来 43 1 xff0c 最后使得序列每一个数取模m后是一个非严格单调递增的序列 xff0c 问至少需要多少
  • 洛谷P1605 迷宫 题解

    洛谷P1605 迷宫 题解 题目背景 问题描述 数据规模 输入 输出 输入输出样例 输入样例 1 xff1a 输出样例 1 xff1a 题解 C 43 43 代码 题目背景 问题描述 给定一个N M方格的迷宫 xff0c 迷宫里有T处障碍
  • linux禁用nouveau grub,NVIDIA驱动安装之禁用nouveau

    最近实验室的服务器英伟达驱动重启之后就不能用了 xff0c 查明原因原来是因为Ubuntu自动升级了内核 xff0c 导致原本的驱动失效了 xff0c 所以一定不要没事干去升级内核 xff0c 下面介绍一下重装驱动的曲折之旅 0x00更改b
  • Python:使用Kivy将python程序打包为apk文件

    1 概述 Kivy是一套Python下的跨平台开源应用开发框架 xff0c 官网 xff0c 我们可以用 它来将Python程序打包为安卓的apk安装文件 以下是在windows环境中使用 安装和配置的过程中会下载很多东西 xff0c 确保
  • Ubuntu16.04进入挂起或休眠状态时按任何键都无法唤醒问题解决办法

    挂起 xff08 待机 xff09 计算机将目前的运行状态等数据存放在内存 xff0c 关闭硬盘 外设等设备 xff0c 进入等待状态 此时内存仍然需要电力维持其数据 xff0c 但整机耗电很少 恢复时计算机从内存读 出数据 xff0c 回
  • java 兔子繁殖问题_兔子繁殖问题

    兔子繁殖问题 设有一对新生的兔子 xff0c 从第三个月开始他们每个月都生一对兔子 xff0c 新生的兔子从第三个月开始又每个月生一对兔子 按此规律 xff0c 并假定兔子没有死亡 xff0c 20个月后共有多少个兔子 xff1f 要求编写