兔群繁殖之谜 | 豆包MarsCode AI刷题

92 阅读1分钟

这个问题实际上是著名的斐波那契数列问题。斐波那契数列的定义是:

  • F(1) = 1
  • F(2) = 1
  • F(n) = F(n-1) + F(n-2) 对于 n ≥ 3

在这个问题中,我们可以将兔子的对数类比为斐波那契数列:

  • 第一个月末有 1 对兔子(F(1) = 1)
  • 第二个月末有 1 对成年兔子和 1 对新的小兔子,共 2 对兔子(F(2) = 1)
  • 从第三个月开始,每个月的兔子对数等于前两个月兔子对数的总和(因为前一个月的成年兔子会繁殖出一对新的小兔子,并且这些新的小兔子会加入前两个月的兔子总数)

因此,我们可以使用循环解决这个问题。

###题解 `def solution(n: int) -> int: if n == 1:
return 1
elif n == 2:
return 2
else:
a, b = 1, 2
for _ in range(3, n + 1):
a, b = b, a + b
return b

if name == "main": # Add your test cases here print(solution(1) == 1) print(solution(5) == 8) print(solution(15) == 987)`