CSP-S 提高级 · CSP 2021 提高级第一轮 第 12 题

选择题 · 答案 C · 考点:递归函数、动态规划、简单动态规划

← 整套速查表 CSP-S 提高级 全部真题

题目

斐波那契数列的定义为: $F_{1}=1$,$F_{2}=1$,$F_{n}=F_{n-1}+F_{n-2}$$(n\geq 3)$ 。现在用如下程序来计算斐波那契数列的第 $n$ 项,其时间复杂度为( )。

F(n):
  if n<=2 return 1
  else return F(n-1) + F(n-2)
答案:C

考点

递归函数动态规划 讲解 →动态规划 真题汇总 →简单动态规划

解题思维

这题其实就考递归树和递推式两个视角,只要意识到每次调用都会分叉成两路,就能直接看出是指数级爆炸,别被‘斐波那契本身是 O(n)’的直觉带偏。

常见错误

最容易选错 A 或 B,觉得递归 n 次或 n²次就够了。其实递归不是简单循环,每层都要拆成两个子问题,调用次数会像树枝一样疯狂分叉。另一种常见错误是以为斐波那契本身是 O(n)(指用循环实现的迭代版本),但题目明确是递归实现,必须按递归树或递推式来算。

详细解析(节选)

考察知识点

递归函数、时间复杂度分析、斐波那契数列

概念定义

同考点真题

在 OI伴学 里做这道题
登录后可计时作答、查看完整六段式解析,并按你的错题自动生成同类练习。
去刷题先做一次 AI 学情诊断