(兔子繁殖问题)有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到三个月后每个月又生一对兔子,假如兔子都不死,问32个月过后的兔子总数为多少?...

网上关于这个问题有很多人说这个符合斐波那契数列,但是我个人在推算的时候发现并不是这样的,所以想自己解决这个问题

 

建立一个兔子类

属性有ID,age

public class rabbit{

  public  $id;

  public  age;

}

第1个月:(id=1,age=1)------------------------------------------------------------------------------------------------------------------------------------------------------------------1

第2个月:(id=1,age=2)------------------------------------------------------------------------------------------------------------------------------------------------------------------1

第3个月:(id=1,age=3)------------------------------------------------------------------------------------------------------------------------------------------------------------------1

第4个月:(id=1,age=4)  (id=2,age=0)------------------------------------------------------------------------------------------------------------------------------------------------2          

第5个月:(id=1,age=5)  (id=2,age=1) (id=3,age=0)-------------------------------------------------------------------------------------------------------------------------------3

第6个月:(id=1,age=6)  (id=2,age=2) (id=3,age=1) (id=4,age=0)--------------------------------------------------------------------------------------------------------------4

第7个月:(id=1,age=7)  (id=2,age=3) (id=3,age=2) (id=4,age=1) (id=5,age=0)---------------------------------------------------------------------------------------------5

第8个月:(id=1,age=8)  (id=2,age=4) (id=3,age=3) (id=4,age=2) (id=5,age=1) (id=6,age=0) (id=7,age=0)-----------------------------------------------------------7

第9个月:(id=1,age=9)  (id=2,age=5) (id=3,age=4) (id=4,age=3) (id=5,age=2) (id=6,age=1) (id=7,age=1)(id=8,age=0)(id=9,age=0)(id=10,age=0)--------10

第十个月:(id=1,age=10)  (id=2,age=6) (id=3,age=5) (id=4,age=4) (id=5,age=3) (id=6,age=2) (id=7,age=2)(id=8,age=1)(id=9,age=1)(id=10,age=1)(id=11,age=0)(id=12,age=0)(id=13,age=0)(id=14,age=0)---14

 

1:以数学的思想解决此问题

  通过以上数列,可以发现规律 a=an-1+an-4

  这时,可以用递归的思想来解决

//使用递归实现
function get_rabbit_num($v)
{

if ($v==1){
return 1;
}
if ($v==2){
return 1;
}
if ($v==3){
return 1;
}
if ($v==4){
return 2;
}
else{
return get_rabbit_num($v-1)+get_rabbit_num($v-4);
}
}

echo get_rabbit_num(14);

2、以编程的思想来解决此问题
class rabbit
{
public $id;
public $age;
public $parent_id;

public function __construct($id,$age,$parent_id)
{
$this->id=$id;
$this->age=$age;
$this->parent_id=$parent_id;
}
}
//月龄加1
function addAge(&$v){
$v->age+=1;
}
//判断是否能生孩子(第三个月的时候才怀上,第四个月才生出来)
function isOk($v){
if ($v->age>3){
return true;
}else{
return false;
}
}

$array_rabbit=[];//兔子的集合
$rabbit=new rabbit('1',0,0);//第一对兔子
array_push($array_rabbit,$rabbit);
for ( $i=0;$i<14;$i++){
array_filter($array_rabbit,"addAge");//每过一个月,先让每对兔子的月龄+1
$array_tmp=array_filter($array_rabbit,"isOk");//找出能生兔子的兔子
$ok_num=count($array_tmp); //能生兔子的兔子数
if (!$ok_num){ //如果都不能生,直接开始下一轮循环
continue; 
} else{
$id_max=max(array_column($array_rabbit,"id"));//最大的id值
foreach ($array_tmp as $item) {
$id_max+=1;//新生出来的兔子的id
$rabbit_new=new rabbit($id_max,0,$item->id);//新建一个兔子对象(新生出来的兔子月龄都为0),并指向是哪对兔子生的
array_push($array_rabbit,$rabbit_new);//将新生出来的兔子加入集合
}
     }
}

echo count($array_rabbit);

 

 

 

转载于:https://www.cnblogs.com/aibaofeng/p/9815502.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/352484.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

IF-ERRORLEVEL使用方法

我们都知道if是命令行下的一个条件判断语句&#xff0c;ERRORLEVEL是它的一个参数&#xff0c;翻译过来就是“错误返回码”的意思&#xff0c;它的作用是判断前一条命令的错误返回值&#xff0c;然后和定义的字符值进行比较&#xff0c;再决定进行什么动作今天远程一个客户&…

Eclipse IDE中的Java 9 module-info文件

请注意&#xff0c;本文并非旨在更新状态&#xff1b; 这只是基于我对Beta代码所做的一些实验而得出的快速更新。 已经有一段时间了&#xff0c;但是我要回到Eclipse IDE中尝试Java 9支持。 为了进行测试&#xff0c;我从Eclipse Project下载了最新的Oxygen &#xff08;4.7&…

局域网mysql数据库访问

1、调出mysql 命令界面 输入命令&#xff1a; mysql> use mysql Database changed mysql> select host,user,password from user; ------------------------------------------------------------ | host | user | password | --…

java.util中,util是什么意思

Util是utiliy的缩写&#xff0c;是一个多功能、基于工具的包。 java.util是包含集合框架、遗留的 collection 类、事件模型、日期和时间设施、国际化和各种实用工具类&#xff08;字符串标记生成器、随机数生成器和位数组、日期Date类、堆栈Stack类、向量Vector类等&#xff09…

Mathematics 9.0 绘制不等式确定的区域

在最新的mathematics软件中使用如下代码&#xff0c;无法产生程序&#xff1a; 在搜索了Mathematics 9.0 -> 帮助 -> 参考资料中心的内容&#xff0c;查到一个更简单好用的函数&#xff0c;正确结果如下&#xff1a;

无法打开包括文件:“mysql..h”: No such file or directory

出现这个问题后&#xff0c;根据网上提供的方法做了很多&#xff0c;但都没有用。后来在盘里面找了一下确实没有mysql.h这个文件&#xff0c;原来mysql必须选择complete安装方式才会有这个头文件。首先重新安装了一次mysql&#xff0c;然后选择自己的工程&#xff0c;进行环境配…

C# WPF 显示图片和视频显示 EmuguCv、AForge.Net测试

C# WPF 显示图片和视频显示 EmuguCv、AForge.Net测试 原文:C# WPF 显示图片和视频显示 EmuguCv、AForge.Net测试WPF 没有用到 PictureBox, 而是用Image代替. 下面我试着加载显示一个图片 。 XAML <Image x:Name"srcImg"Width"400"Height"300"…

一般一个前端项目完成需要多久_一种按周迭代的敏捷式项目管理方法

项目管理有很多理论&#xff0c;并且相关内容非常丰富&#xff0c;例如经典的项目管理的教材《项目管理&#xff1a;计划、进度和控制的系统方法》&#xff0c;字数达到了100万字。但是从源头来说&#xff0c;经典项目管理理论都是源自于对生产项目的过程中需要的管理的总结。对…

excel连接mysql 数据库

最近做个项目需要对收集到的数据进行实时刷新&#xff0c;原先考虑让获得的数据之间输出到txt文本&#xff0c;然后又文本导入到数据库&#xff0c;但是txt在修改查找的时候要把数据都读入到内存在进行相关改动&#xff0c;这样就很耗内存&#xff0c;而且文件占用率比较高&…

python jieba库下载_Python中jieba库安装步骤及失败原因解析

Python 中 jieba 库安装步骤及失败原因解析 作为计算机小白&#xff0c; Python 的流行也让我蠢蠢欲动&#xff0c; 在请教计算机 专业同学后&#xff0c;开始上网课自学 Python 基础知识。今天老师简单的一 句话“在命令行去运行 pip install jieba 的指令”安装 jieba 库&…

开放源代码库指南

微软.NET开发团队在博客上&#xff08;https://blogs.msdn.microsoft.com/dotnet/2018/10/15/guidance-for-library-authors/&#xff09;刚刚发布了.NET Library Guidance的第一个版本。这是一系列全新的文章&#xff0c;指导你为.NET创建高质量代码库。该指南包含我们已确定的…

[Microsoft][ODBC 驱动程序管理器] 在指定的 DSN 中,驱动程序和应用程序之间的体系结构不匹配

在数据库和excel对接中有可能会出现错误“[Microsoft][ODBC 驱动程序管理器] 在指定的 DSN 中&#xff0c;驱动程序和应用程序之间的体系结构不匹配” 本人发生这种情况的是在excel 在选定数据连接向导的时候&#xff0c;这是驱动程序和excel的体系结构不匹配&#xff1b; 环…

python程序写诗_python写的简单发送邮件的脚本

近来有些东西需要监控报警发邮件&#xff0c;然后在网上找了点材料&#xff0c;自己写了一个简单发送邮件的脚本&#xff0c;主要就是运用python的smtplib模块&#xff0c;分享给大家看一下&#xff1a; #!/usr/bin/env python # -*- coding: utf-8 -*- #导入smtplib和MIMEText…

多线程的运行状态

多线程运行状态 线程从创建、运行到结束总是处于下面五个状态之一&#xff1a;新建状态、就绪状态、运行状态、阻塞状态及死亡状态。 新建状态 当用new操作符创建一个线程时&#xff0c; 例如new Thread(r)&#xff0c;线程还没有开始运行&#xff0c;此时线程处在新建状态。 当…

LOAD DATA INFILE 语法

原文地址:http://blog.sina.com.cn/s/blog_539f03f00100xfxb.html mysql 的LOAD DATA INFILE 是一个高速insert的不错的方案 篇文章语法介绍的比较详细&#xff0c;转载&#xff0c;记录。 其实我就这样用&#xff1a; load data infile /home/mark/data_update.sql replace i…

@configurationproperties注解的使用_SpringBoot常用注解的简单理解

不定时更新...文章目录Spring容器JavaBeanPOJOAutowiredControllerResourceRestControllerServiceRepositoryMapperComponentEntityTransactionalBeanResponseBodyRestControllerRequestMappingPathVariableRequestParamRequestBody ValueSpringBootApplicationConfigurationPr…

3. Recursive AutoEncoder(递归自动编码器)

1. AutoEncoder介绍 2. Applications of AutoEncoder in NLP 3. Recursive Autoencoder&#xff08;递归自动编码器&#xff09; 4. Stacked AutoEncoder&#xff08;堆栈自动编码器&#xff09; 1. 前言 今天主要介绍用在NLP中比较常见的AutoEncoder的模型&#xff0c;Recursi…

python语言语块句的标记_NLTK基础教程学习笔记(十一)

语块分解例子&#xff1a; from nltk.chunk.regexp import * import nltk test_sent"The prime minister announced he had asked the chief government whip, Philip Ruddock, to call a special party room meeting for 9am on Monday to consider the spill motion.&qu…

Excel的VBA连接数据库方法

Sub GetData() Dim strConn As String, strSQL As String Dim conn As ADODB.Connection Dim ds As ADODB.Recordset Dim col As Integer 清空电子表格的所有数据 Cells.Clear 连接数据库的字符串 strConn "ProviderSQLOLEDB.1;Persist Security InfoTrue;User IDnam…

Python基础4

本节内容 列表、元组操作字符串操作字典操作集合操作文件操作字符编码与转码 1. 列表、元组操作 列表是我们最以后最常用的数据类型之一&#xff0c;通过列表可以对数据实现最方便的存储、修改等操作 定义列表 1names [Alex,"Tenglan",Eric]通过下标访问列表中的元素…