日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

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

發布時間:2023/12/2 编程问答 33 豆豆

網上關于這個問題有很多人說這個符合斐波那契數列,但是我個人在推算的時候發現并不是這樣的,所以想自己解決這個問題

?

建立一個兔子類

屬性有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:以數學的思想解決此問題

  通過以上數列,可以發現規律 an?=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

總結

以上是生活随笔為你收集整理的(兔子繁殖问题)有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到三个月后每个月又生一对兔子,假如兔子都不死,问32个月过后的兔子总数为多少?...的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。