GESP 四级 · GESP202609 C++ 四级 第 22 题

判断题 · 答案 A · 考点:循环控制、递推

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

题目

下面递推程序计算 n!。当 n = 4 时,返回值为 24 。

int factorial(int n) {
int result = 1;
for (int i = 1; i <= n; i++) {
result *= i;
}
return result;
}
答案:A

考点

循环控制递推

解题思维

模拟循环过程,初始 result=1,每次 i 从 1 到 n 累乘,循环结束后 result 即为 n!。关键看循环条件和乘法操作是否覆盖所有因子。

常见错误

循环条件写错(如 i < n 会少乘 n)、result 初始化为 0 导致全为 0、误以为需要递归实现、i 从 0 开始导致 result 被清零。

详细解析(节选)

考纲定位:本题属于 GESP 四级"循环控制"与"递推"模块,命题人用 n=4 的简单递推式卡住的是考生对循环边界和累乘逻辑的机械记忆。

解题思维:模拟循环过程,初始 result=1,每次 i 从 1 到 n 累乘,循环结束后 result 即为 n!。关键看循环条件和乘法操作是否覆盖所有因子。

陷阱拆解:

反命题思维:若将 n 改为 5,result 应为 120;若改为递归版本 factorial(n) = n * factorial(n-1),逻辑不变但代码更冗长;若将循环改为 while (i <= n),需手动 i++,易漏写导致死循环。

结论:代码正确,选 A。

同考点真题

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