当前位置: 面试刷题>> 森林中的兔子 (经典算法题500道)
**题目描述补充**:
在森林中,有一群兔子,它们按照特定的规则繁殖。具体规则如下:
1. 初始时,森林中有1对年轻的兔子(即2只兔子)。
2. 从第二个月开始,每个月每对年轻的兔子都会成长为成熟的兔子对,并且它们会额外生出1对年轻的兔子。
3. 假设兔子不会死亡,问经过n个月后,森林中总共有多少对兔子?
这个问题是著名的斐波那契数列问题的一个变体,其中斐波那契数列是这样一个数列:每个数是前两个数的和,数列以0和1开始。
**示例代码实现**:
### PHP 示例
```php
function fibonacciRabbits($n) {
if ($n <= 1) {
return 1; // 初始时1对兔子
}
$young = 1; // 年轻兔子对数
$mature = 0; // 成熟兔子对数
$total = 1; // 总兔子对数
for ($i = 2; $i <= $n; $i++) {
// 下个月年轻兔子变成成熟兔子,并且每对成熟兔子生出1对年轻兔子
$newYoung = $mature;
$mature = $young + $mature;
$young = $newYoung;
$total = $young + $mature; // 更新总兔子对数
}
return $total;
}
echo fibonacciRabbits(10); // 示例输出第10个月的兔子对数
```
### Python 示例
```python
def fibonacci_rabbits(n):
if n <= 1:
return 1
young, mature = 1, 0
total = 1
for i in range(2, n + 1):
new_young = mature
mature, young = young + mature, new_young
total = young + mature
return total
print(fibonacci_rabbits(10)) # 示例输出第10个月的兔子对数
```
### JavaScript 示例
```javascript
function fibonacciRabbits(n) {
if (n <= 1) {
return 1;
}
let young = 1; // 年轻兔子对数
let mature = 0; // 成熟兔子对数
let total = 1; // 总兔子对数
for (let i = 2; i <= n; i++) {
let newYoung = mature;
mature = young + mature;
young = newYoung;
total = young + mature;
}
return total;
}
console.log(fibonacciRabbits(10)); // 示例输出第10个月的兔子对数
```
**码小课网站中有更多相关内容分享给大家学习**,包括斐波那契数列的深入解析、其他算法问题解析以及面试技巧等,欢迎访问码小课网站获取更多学习资料。