#G5OBJ02. GESP C++ 五级真题客观题|递归与复杂度

GESP C++ 五级真题客观题|递归与复杂度

01|2025-03-L5-TF-05

递归函数必须具有一个终止条件,以防止无限递归。

{{ select(1) }}

  • 正确
  • 错误

02|2025-03-L5-SC-07

在程序运行过程中,如果递归调用的层数过多,会因为( )引发错误。

{{ select(2) }}

  • 系统分配的栈空间溢出
  • 系统分配的堆空间溢出
  • 系统分配的队列空间溢出
  • 系统分配的链表空间溢出

03|2025-12-L5-TF-09

递归函数一定要有终止条件,否则可能会造成栈溢出。

{{ select(3) }}

  • 正确
  • 错误

04|2025-06-L5-SC-09

下面的C++代码,用于求一系列数据中的最大值。有关其算法说法错误的是( )。

SC-09题干代码

{{ select(4) }}

  • 该算法采用分治算法
  • 该算法是递归实现
  • 该算法采用贪心算法
  • 该算法不是递推算法

05|2025-06-L5-TF-09

函数 puzzle 定义如下,则调用 puzzle(7) 程序会无限递归。

TF-09题干代码

{{ select(5) }}

  • 正确
  • 错误

06|2025-09-L5-TF-03

下面递归实现的斐波那契数列的时间复杂度为 O(2ⁿ)。

TF-03题干代码

{{ select(6) }}

  • 正确
  • 错误

07|2025-09-L5-TF-08

下面代码采用分治算法求解标准 3 柱汉诺塔问题,时间复杂度为 O(n log n)。

TF-08题干代码

{{ select(7) }}

  • 正确
  • 错误

08|2025-09-L5-TF-09

所有递归算法都可以转换为迭代算法。

{{ select(8) }}

  • 正确
  • 错误

09|2025-12-L5-TF-08

以下fib函数计算第n项斐波那契数(fib(0)=0,fib(1)=1),其时间复杂度为O(n)。

TF-08题干代码

{{ select(9) }}

  • 正确
  • 错误

10|2025-12-L5-SC-13

下面给出了阶乘计算的两种方式。以下说法正确的是( )。

SC-13题干代码

{{ select(10) }}

  • 上面两种实现方式的时间复杂度相同,都为O(n)
  • 上面两种实现方式的空间复杂度相同,都为O(n)
  • 上面两种实现方式的空间复杂度相同,都为O(1)
  • 函数factorial1()的时间复杂度为O(2ⁿ),函数factorial2()的时间复杂度为O(n)

11|2026-03-L5-TF-04

若某算法满足递推式T(n)=2T(n/2)+O(n),则其时间复杂度为O(n log n)。

{{ select(11) }}

  • 正确
  • 错误

12|2026-03-L5-SC-09

关于递归函数调用,下列说法错误的是( )。

{{ select(12) }}

  • 递归调用层次过深时,可能会耗尽栈空间导致栈溢出
  • 尾递归函数可以通过编译器优化来避免栈溢出
  • 所有递归函数都可以通过循环结构来改写,从而避免栈溢出
  • 栈溢出发生时,程序会抛出异常并可以继续执行后续代码

13|2026-03-L5-TF-10

任何递归程序都可以改写为等价的非递归程序,但改写后的非递归程序一定需要显式地使用栈来模拟递归调用过程。

{{ select(13) }}

  • 正确
  • 错误

14|2026-06-L5-TF-08

以下函数 f1 的时间复杂度比函数 f2 的更高。

TF-08题干代码

{{ select(14) }}

  • 正确
  • 错误

15|2025-03-L5-SC-08

对下面两个函数,说法错误的是( )。

SC-08学生校注版题干代码;仅补return res

校注版说明(作答前常显):校注版:官网factorialB在n>1路径缺少return res,导致A与D均可判错;学生训练版仅在factorialB末尾补一行return res,不改其他代码、选项、考点或难度。补正后A/B/C为真、D为错误说法,学生判题答案D;官网原代码与官方D永久保留。

{{ select(15) }}

  • 两个函数的实现的功能相同。
  • 两个函数的时间复杂度均为 O(n)。
  • factorialA采用递归方式。
  • factorialB采用递归方式。

16|2025-06-L5-SC-10

下面的C++代码,用于求一系列数据中的最大值。有关其算法说法错误的是( )。

SC-10题干代码

校注版说明(作答前常显):校注版:官网原题及官方答案C永久保留。按代码,C“没有使用递归,因此不会因递归层数过多导致栈溢出”为真;按通常辅助空间口径,本题迭代版O(1),上一题递归分治调用栈O(log n),D才是错误说法。学生训练题面不改,判题答案改为D。

{{ select(16) }}

  • 本题 find_max() 函数采用的是迭代算法
  • 本题 find_max() 函数的时间复杂度为 O(n)
  • 本题 find_max() 函数没有使用递归,因此不会因为递归调用层数过多而导致栈溢出。
  • 本题 find_max() 函数和上一题的 find_max() 空间复杂度相同