GESP 四级 · GESP 202403 C++ 四级 第 8 题

选择题 · 答案 A · 考点:递推、一维数组、循环控制

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

题目

下面 C++ 函数中采用的算法是( )。

int fib(int n)
{
    int i, f[n] = {0, 1};

    for (int i = 2; i <= n; i++)
        f[i] = f[i - 1] + f[i - 2];

    return f[n];
}
答案:A

考点

递推一维数组循环控制

解题思维

答案A。在循环中遍历数组并累积结果时,注意累加变量的初始值和每次循环的更新方式。

常见错误

for循环体可能一次都不执行!这是和while循环一样的"先判断后执行"机制。

详细解析(节选)

【考点】递推|数组|循环

1. 🎯 考纲定位:GESP 四级“算法基础”模块,命题人用斐波那契递推式卡住“混淆实现方式与算法本质”的弱点——循环/递归只是代码写法,递推才是数学定义。

2. 🧠 解题思维:看到"f[i]=f[i-1]+f[i-2]"立刻识别为“当前项由前两项确定”的递推关系;数组存中间结果、循环做计算步骤,但算法归类只看数学规律,通法:凡“用前几步结果算下一步”的都是递推,不管用循环还是递归实现。

3. 🪤 陷阱拆解:B 选项“递归”是典型偷换概念——代码没有递归调用;C/D 泛泛而谈实现手段,没触及算法核心;A 才是精准对应“递推式定义”。只背“循环=迭代”就会掉坑。

4. 🔄 反命题思维:若把循环改成递归,答案仍是 A,因为算法本质未变。刷到类似题先问“题目定义的是数学规律还是代码写法?”

同考点真题

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