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

建立一个兔子类

属性有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;    }}//月龄加1function 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

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

  1. c语言编程一对新出生的兔子,C语言 有一对兔子。从出生后第三个月起每个月都生一对兔子,小兔子长到三个月后又生一对小兔子,假如兔子都不死,问每个月的兔子总数为多少。...

    int i, n; unsigned int month_1=2;//出生第一个月的兔子数量 unsigned int month_2=0;//出生第二个月的兔子数量 unsigned int mon ...

  2. C语言试题106之有一对兔子,从出生后第 3 个月起每个月都生一对兔子,小兔子长到第三个月 后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?

    1.题目 题目:有一对兔子,从出生后第 3 个月起每个月都生一对兔子,小兔子长到第三个月 后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少? 分析:兔子的规律为数列 1,1,2,3,5, ...

  3. 实例011:养兔子 有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?

    实例011:养兔子 题目:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少? 分析:出生下来为第0个月,满月为1月兔, ...

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

    有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子对数为多少? 由图可知, 第一个月是小兔子,是一对小兔子 第二个月从小兔子变成大 ...

  5. 【python进阶】古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?

    古典问题: 有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少? 方法一:简单方法 month = int(input( ...

  6. 兔子繁殖问题:一对兔子从出生后第三个月开始,每月生一对小兔子。小兔子到第三个月又开始生下一代小兔子。假若兔子只生不死,一月份抱来一对刚出生的小兔子,问一年中每个月各有多少对兔子(C++)(迭代法)

    算法经典题型13 兔子繁殖问题:一对兔子从出生后第三个月开始,每月生一对小兔子.小兔子到第三个月又开始生下一代小兔子.假若兔子只生不死,一月份抱来一对刚出生的小兔子,问一年中每个月各有多少对兔子.(三 ...

  7. C语言实现,古典问题(兔子生崽):有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?(输出前40个月即可)

    题目:古典问题(兔子生崽):有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子, 假如兔子都不死,问每个月的兔子总数为多少?(输出前40个月即可) 程序分析:兔子 ...

  8. 【C语言】题目:古典问题(兔子生崽):有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?

    题目:古典问题(兔子生崽):有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?((输出前40个月) 题目分析: 由题意 ...

  9. 古典问题(兔子生崽):有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?(输出前40个月即可)

    古典问题(兔子生崽):有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?(输出前40个月即可) 先将前几个月的兔子数量 ...

最新文章

  1. 给帝国cms7.5后台文章编辑器ckeditor增加一个行距的功能插件
  2. 【笔记篇】C#笔记1
  3. Jupyter Notebook 代码自动补全功能
  4. 【通知】2020年有三AI-CV夏季划升级,更多项目,更高难度,更加落地
  5. Forefront_TMG_2010-TMG发布SSL OWA Exchange 2010
  6. 一致 先验分布 后验分布_分布式事务常见解决方案与最终一致性
  7. 计算机网络重要机制(一)可靠数据传输
  8. 常用类 (五) ----- Date日期类和Calender日历类
  9. 64位浮点数_浮点数误差
  10. ajax提交与上传文件同步
  11. 基于迭代局部搜索和随机惯性权重的BA算法MATLAB实现(ILSSIWBA)
  12. 物联网平台建设调研报告
  13. Spring之@Required注解
  14. 零知识证明之 SnarkJS 入门
  15. 03.服务限流实现方案
  16. Boost电路连续、断续、空载状态分析与计算
  17. Q新闻丨Java 9正式版恐再延期;顺丰菜鸟口水战涉及阿里云;编程语言排行榜Python第四;盲人程序员背百万字符,用耳朵编程...
  18. Word97文字处理软件培训教案
  19. 远程PLC监控调试,PLC通用中转服务器,多客户端tcp中转服务器源代码
  20. python透明色的代码_Matplotlib中的透明标记面颜色

热门文章

  1. shell脚本--使用for循环逐行访问txt文件
  2. java体系技术框架_java框架之Spring 核心框架体系结构
  3. mysql怎么返回上一行_月球上并没有发射基地,阿波罗飞船是怎么返回地球的?...
  4. 不能将紧实的字段 绑定到_代码整洁之道【笔记】
  5. sql计算留存_SQL无所不能:DBA宝妈宝爸系列分享
  6. 在c语言中char型数据在内存中的储存形式为什么
  7. binlog日志_MySQL三大日志binlog、redo log和undo log
  8. 外链分享已取消无法下载怎么办_微信升级外链规范:“砍一刀”、“帮我加速吧”将被封禁...
  9. PAT乙级 1038 统计同成绩学生 C++)
  10. [渝粤教育] 浙江工商大学 大学英语(4)(韩颖) 参考 资料