用 Python 编写程序,查找斐波那契数列第 n 项的结果

pythonserver side programmingprogramming更新于 2025/12/23 13:00:17

假设我们有一个数字 n。我们必须找到前 n 个斐波那契项(斐波那契数列第 n 项)的总和。如果答案太大,则返回结果模 10^8 + 7。

因此,如果输入为 n = 8,则输出将为 33,因为前几个斐波那契项是 0 + 1 + 1 + 2 + 3 + 5 + 8 + 13 = 33

为了解决这个问题,我们将遵循以下步骤 −

  • m := 10^8+7
  • memo := a new map
  • 定义一个函数solve()。这将需要 n, m
  • 如果 n 在 memo 中,则
    • 返回 memo[n]
  • 当 n < 2 时,memo[n] := n,否则 (solve(n-1, m) +solve(n-2, m)) mod m
  • 返回 memo[n]
  • 从主方法中获取 memo 值列表并取其总和。

示例

让我们看看下面的实现以便更好地理解 −

m = 10**8+7
memo = {}
def solve(n, m):
   if n in memo:
      return memo[n]
   memo[n] = n if n < 2 else (solve(n-1, m)+solve(n-2, m)) % m
   return memo[n]

n = 8
solve(n, m)
print(sum(list(memo.values())[:n]))

输入

8

输出

33

相关文章


有用资源