GESP 五级 · GESP202609 C++ 五级 第 8 题

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

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

题目

函数 f(int n) 定义如下,则 f(4) 的结果是(  )。

int f(int n) {
if (n == 1)
return 1;
return n + f(n - 1);
}
答案:D

考点

函数与递归

解题思维

递归题先找终止条件,再想每层返回什么。这题 n=1 时直接返回 1,其他情况返回 n+f(n-1),本质是把 1~n 累加。看到 f(4) 就按展开顺序一层层算:f(1)=1,f(2)=2+1=3,f(3)=3+3=6,f(4)=4+6=10。同类题通法:先写递推式 f(n)=n+f(n-1),再代入数值逐层展开,最后汇总。

常见错误

选项 A 把 f(4) 当成只返回 4,忽略了递归调用;B 是 4+3 漏了后面两项;C 是 4+3+2 漏了 +1;D 才是完整累加。学生常犯两类错:一是忘记递归会一直打到 n=1 才停,二是展开时漏掉某一层返回值,导致少加 1 或 2。

详细解析(节选)

1. 考纲定位

本题考查递归,位于 GESP 五级《算法》模块。命题人放这道题,就是要卡住那些只会背"递归就是自己调用自己"却不会真正展开求值的考生——五级不再考复杂递归,但必须能准确算出简单递归函数的返回值,这是后续动态规划、树遍历的基础能力。

2. 解题思维

看到 f(4) 先想:终止条件是什么?n=1 时返回 1。那 f(2) 呢?2+f(1)=2+1=3。f(3) 呢?3+f(2)=3+3=6。f(4) 呢?4+f(3)=4+6=10。递推式 f(n)=n+f(n-1) 本质就是 1~n 的累加和,代入 n=4 得 1+2+3+4=10。这一类题通法:先写出递推式,再代入数值逐层展开,最后汇总。

同考点真题

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