#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++代码,用于求一系列数据中的最大值。有关其算法说法错误的是( )。

{{ select(4) }}
- 该算法采用分治算法
- 该算法是递归实现
- 该算法采用贪心算法
- 该算法不是递推算法
05|2025-06-L5-TF-09
函数 puzzle 定义如下,则调用 puzzle(7) 程序会无限递归。

{{ select(5) }}
- 正确
- 错误
06|2025-09-L5-TF-03
下面递归实现的斐波那契数列的时间复杂度为 O(2ⁿ)。

{{ select(6) }}
- 正确
- 错误
07|2025-09-L5-TF-08
下面代码采用分治算法求解标准 3 柱汉诺塔问题,时间复杂度为 O(n log n)。

{{ 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)。

{{ select(9) }}
- 正确
- 错误
10|2025-12-L5-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 的更高。

{{ select(14) }}
- 正确
- 错误
15|2025-03-L5-SC-08
对下面两个函数,说法错误的是( )。

校注版说明(作答前常显):校注版:官网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++代码,用于求一系列数据中的最大值。有关其算法说法错误的是( )。

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