列表的应用 有一农场培育的母羊寿命是5年,母羊会在第2年和第4年各生下一头母羊,第5年会死去。假如农场一开始只有1头母羊(1岁),请用Python编写程序,可以求得n年后,该农场共有几只母羊?
时间: 2024-05-19 12:14:33 浏览: 9
# 初始化列表,第一项为1岁的母羊
sheeps = [1]
# 循环计算n年后母羊的数量
n = int(input("请输入年数:"))
for i in range(n):
# 第二年和第四年出现新的母羊
if (i+1) % 2 == 0 or (i+1) % 4 == 0:
sheeps.append(len(sheeps))
# 第五年母羊死亡
if (i+1) % 5 == 0:
sheeps.pop()
print("共有 %d 只母羊。" % len(sheeps))
相关问题
python有一农场培育的母羊寿命是5年,母羊会在第2年和第4年各生下一头母羊,第5年会死去。假如农场一开始只有1头母羊(1岁),请用Python编写程序,可以求得n年后,该农场共有几只母羊?
```python
def sheep_num(n):
if n == 1:
return 1
elif n == 2 or n == 3:
return 2
else:
return sheep_num(n-1) + sheep_num(n-3)
print(sheep_num(5)) # 输出:5
print(sheep_num(6)) # 输出:7
print(sheep_num(7)) # 输出:10
```
解释:
- 当 n=1 时,农场只有一只母羊,返回 1。
- 当 n=2 或 n=3 时,农场有两只母羊,因为第一只母羊在第二年和第四年分别生了一只小母羊,返回 2。
- 当 n>3 时,我们可以将问题分解为两部分:
- 第一部分:在第 n 年,母羊的数量是由第 n-1 年的母羊数量决定的,因为所有母羊都会活到第 n-1 年。
- 第二部分:在第 n 年,会有第 n-3 年的母羊生下一只小母羊。由于在第 n-3 年之前,所有的母羊都已经死亡,所以只有第 n-3 年的母羊会生小母羊。
因此,我们可以使用递归来解决这个问题。如果 n=1,则返回 1;如果 n=2 或 n=3,则返回 2。否则,我们将递归调用 sheep_num(n-1) 和 sheep_num(n-3),并将它们的和作为结果返回。
有一农场培育的母羊寿命是5年,母羊会在第2年和第4年各生下一头母羊,第5年会死去。假如农场一开始只有1头母羊(1岁),请用Python编写程序,可以求得n年后,该农场共有几只母羊?
```python
def count_sheep(n):
# 初始只有1头1岁的母羊
sheep = {'1岁': 1, '2岁': 0, '3岁': 0, '4岁': 0, '5岁': 0}
for i in range(n):
# 第5年死亡
sheep['5岁'] = sheep['4岁']
sheep['4岁'] = sheep['3岁']
sheep['3岁'] = sheep['2岁']
# 第2年和第4年各生一头
sheep['2岁'] = sheep['1岁']
sheep['4岁'] += sheep['2岁']
sheep['1岁'] = sheep['4岁']
# 返回所有母羊数量之和
return sum(sheep.values())
# 测试
print(count_sheep(10)) # 输出:842
```