兔子繁殖问题:一对兔子,从出生后第3个月起每个月都生一对小兔子。小兔子长到第3个月后每个月又生一对小兔子。求第1~第20个月每个月有多少对兔子。(使用迭代算法和递归算法分别实现)
时间: 2023-10-16 20:20:30 浏览: 104
python 计算每个月的兔子总数为多少?(示例)
使用迭代算法实现:
```python
def rabbit_pairs_iterative(n):
if n <= 0:
return 0
elif n == 1 or n == 2:
return 1
else:
prev_1 = 1 # 第n-1个月的兔子对数
prev_2 = 1 # 第n-2个月的兔子对数
curr = 0 # 第n个月的兔子对数
for i in range(3, n+1):
curr = prev_1 + prev_2 # 根据规律计算
prev_2 = prev_1
prev_1 = curr
return curr
for i in range(1, 21):
print(f"{i}月份有{rabbit_pairs_iterative(i)}对兔子")
```
使用递归算法实现:
```python
def rabbit_pairs_recursive(n):
if n <= 0:
return 0
elif n == 1 or n == 2:
return 1
else:
return rabbit_pairs_recursive(n-1) + rabbit_pairs_recursive(n-2)
for i in range(1, 21):
print(f"{i}月份有{rabbit_pairs_recursive(i)}对兔子")
```
这两种算法都可以求解出第1到第20个月份的兔子对数,但是递归算法效率较低,容易造成栈溢出。因此,在实际应用中,迭代算法更为实用。
阅读全文