GESP 七级 · GESP 202403 C++ 七级 第 14 题

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

← 整套速查表 GESP 七级 全部真题

题目

下面程序的输出为( )。

#include <iostream>
using namespace std;
int down(int n) {
    if (n <= 1)
        return n;
    return down(n - 1) + down(n - 2) + down(n - 3);
}
int main() {
    cout << down(6) << endl;
    return 0;
}
答案:A

考点

递推函数与递归

解题思维

模拟程序执行过程,逐行跟踪变量变化,特别关注循环边界和递归终止条件。

常见错误

模拟执行时注意:① 循环变量的起始和终止值;② 递归的边界条件;③ 数据类型转换和精度问题。

详细解析(节选)

【考点】递推|递归|栈溢出风险

1. 考纲定位 GESP 七级《递归与递推》模块,主考“递归终止条件”与“栈深度控制”。命题人把 n<=1 设为断点,不是考函数定义,而是考察能否追踪到最深处——这是七级算法题的典型“追根溯源”设计,卡住的是只会写递归框架、不会模拟执行流程的学生。

2. 解题思维 递推式 down(n)=down(n-1)+down(n-2)+down(n-3), 边界 n<=1 时直接返回 n。down(6) 的调用树必会触底:6→5,4,3;5→4,3,2;4→3,2,1;3→2,1,0;2→1,0,-1;1 与 0 直接返回。down(-1) 虽为负数,但仍在 n<=1 范围内,依定义返回 -1。down(2)=1+0-1=0;down(3)=0+1+0=1;down(4)=1+0+1=2;down(5)=2+1+0=3;down(6)=3+2+1=6。

3. 陷阱拆解 B 选项13是斐波那契数列前六项和,命题人故意用“常见数列”干扰,考你是否会混淆递推式;C 选项20是 `1+2+3

同考点真题

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