下列关于递归算法的说法,错误的是( )。
查看提示
区分“函数调用开销”与“渐进时间复杂度”。
巩固递归边界、调用栈、记忆化、汉诺塔与分治基本模型。
12T0110 分钟更新于 2026-09-02Zhangyf0325基础~进阶draft| 类型 | 本 Lab 的处理方式 |
|---|---|
| 基础概念 | 递归边界、调用栈、局部变量和适用结构 |
| 递归优化 | 识别 Fibonacci 重复子问题与记忆化 |
| 分治模型 | 分解、求解、合并以及主定理基础 |
| 易错边界 | 明确阶乘基准条件后再统计调用次数 |
ch12-01-q01下列关于递归算法的说法,错误的是( )。
区分“函数调用开销”与“渐进时间复杂度”。
ch12-01-q02函数 factorial(n) 在 n == 1 时直接返回 1,否则返回 n * factorial(n - 1)。计算 factorial(5) 时,包含最初调用在内,函数总共被调用多少次?
把首次调用和触发基准情况的最后一次调用都列出来。
ch12-01-q03未经记忆化的递归算法按 F(n)=F(n-1)+F(n-2) 计算 Fibonacci 数,其常用渐进时间上界是( )。
观察同一个 F(k) 会在递归树中被重复计算多少次。
ch12-01-q04将朴素递归计算 Fibonacci 数的时间复杂度优化为
优化的关键是让相同参数对应的子问题只计算一次。
ch12-01-q05汉诺塔问题中,将
最大圆盘只移动一次,但它前后都要完整移动一次上方的圆盘。
ch12-01-q06下列问题中,结构本身具有明显递归定义,因而最自然地适合用递归实现的是( )。
寻找“子结构与整体属于同一类对象”的选项。
ch12-01-q07分治法的三个基本步骤是( )。
对应英文 Divide、Conquer、Combine。
ch12-01-q08经典分治算法通常希望分解出的子问题具有什么性质?
检查规模是否缩小、方法能否复用,以及子问题是否大量重叠。
ch12-01-q09分治法与动态规划在子问题结构上的典型区别是( )。
想一想为什么 Fibonacci 适合记忆化,而归并排序不需要缓存左右区间。
ch12-01-q10某分治算法满足
先计算