NOIP 普及组初赛 · NOIP 2012 普及组初赛试题 第 18 题

选择题 · 答案 A · 考点:递归函数

← 整套速查表 NOIP 普及组初赛 全部真题

题目

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

答案:A

考点

递归函数

解题思维

这题考递归和内存管理。拿到题先想函数调用机制:每次调用都在栈上压栈帧,递归就是层层压栈,层数多了栈就满了,直接选栈溢出。

常见错误

很多同学一看到“溢出”就慌,容易把堆、队列、链表都混进来。其实递归只和栈有关,堆是动态申请那块,队列是排队,链表是节点指针,跟栈帧没关系。另外有些同学会纠结“栈溢出是不是系统分配的”,其实栈就是系统(或运行时环境)专门划的一块固定区域,层数太多确实会耗尽这块空间。

详细解析(节选)

考点:递归与栈溢出

递归函数每次调用自身时,系统在栈上分配新的栈帧(存参数、局部变量、返回地址)。栈空间有限(通常几MB),递归层数太多→栈满→栈溢出(Stack Overflow)。

命题视角

命题人爱考“递归=栈”这个对应关系,喜欢用“层数过多”这种直观描述来指向栈溢出,同时用堆、队列、链表做干扰项,看你是否真的理解函数调用栈的工作原理。

同考点真题

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