GESP 四级 · GESP 202306 C++ 四级 第 17 题

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

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

题目

数列 1, 1, 2, 3, 5, 8 … 是以意大利数学家列昂纳多·斐波那契命名的数列,从第三个数开始,每个数是前面两项之和。如果计算该数列的第 $n$ 项(其中 $n>3$)$fib(n)$,我们采用如下方法:① 令 $fib(1)=fib(2)=1$ ②用循环 for i=3 to n 分别计算 $f(i)$ ③输出 $fib(n)$。这体现了递推的编程思想。

答案:A

考点

递推循环控制算法

解题思维

这题考递推算法在循环里的实现。拿到题先抓定义:斐波那契从第三项起每一项等于前两项之和。再看代码流程:初始化前两项,循环从3到n,每次算f(i)=f(i-1)+f(i-2)。只要边界和递推式对得上,逻辑就通,不用纠结“分别计算”这几个字是不是在忽悠你。

常见错误

最容易错在死抠字眼。看到“分别计算 f(i)”就慌,觉得是不是要写一堆赋值语句,或者怀疑循环本身有问题。其实命题人就是想看你懂不懂递推的本质——前两项已知,后面每一项都是前两项相加。只要循环从3开始,每次把当前项算出来,逻辑就完全正确。选项B是干扰项,专门坑那些只背结论、没理解计算流程的人。

详细解析(节选)

考点定位:递推算法与循环边界

GESP 四级《算法与程序设计》模块明确要求掌握递推思想。命题人放这道题,核心意图就是区分“背过斐波那契公式”和“真正理解计算流程”的考生。这道题看似简单,实则要求对“前两项之和”的递推关系和循环边界有精准把握。

解题思维:从定义到代码

看到题,先抓住定义核心:从第三项起,每一项等于前两项相加。再看方法描述:①初始化 fib(1)=fib(2)=1,②循环 i 从 3 到 n,③输出 fib(n)。这里的关键是验证循环体是否真的实现了“前两项之和”——方法里虽未写出具体赋值语句,但“分别计算 f(i)”结合斐波那契定义,显然指的就是 f(i)=f(i-1)+f(i-2)。 循环起点 i=3 恰好对应数列第三项,终点 i=n 保证计算出第 n 项,输出 fib(n) 自然得到答案。整个流程与定义完全吻合,故选 A。

陷阱拆解:命题人怎么挖坑

选项 B“错误”是典型干扰。命题人利用的误区有三:一是混淆循环边界——若循环从 i=2 开始,会重复计算 fib(2),虽然值没变但逻辑冗余;二是误以为“分别计算”意味着要单独写多条赋值语句,其实一次循环迭代就完成;三是偷换概念——把“计算 f(i)”理解为求和公式而非两项相加。最阴险的细节是“分别计算 f(i)”这个表述,表面看似乎需要多条语句,实则只是强调循环体内针对每个 i 进行计算,并非额外操作。只背结论不理解本质的人,看到“分别计算”就会本能地怀疑。

反命题思维

换一换条件:若把循环改成“for i=2 to n”,此时 fib(2) 会被重新赋值为 fib(1)+fib(0)=1+0=1,值没变,但逻辑上是冗余操作,严格说仍算正确。若改成“for i=3 to n-1”,则 fib(n) 永远没被计算,输出的是 fib(n-1),答案直接变错。刷到类似题时,先问自己:命题人改这个边界想让我掉进哪个坑?

考频趋势与预测

递推是算法模块的高频考点。题库共考过 79 题,覆盖 7 个级别。逐年分布:2007年1题、2009年1题、2015年1题、2018年1题、2023年12题、2024年23题、2025年24题、2026年13题、null年3题。分赛事:GESP 六级34题、GESP 七级27题、GESP 八级10题、GESP 五级3题、NOIP 提高组 初赛3题、CSP 提高级1题、NOIP 普及组 初赛1题。 从数据看,2023-2025 年递推类题目数量激增(2025 年达 24 题),说明该考点在近期考试中权重极大。结合 GESP 四级侧重基础算法思想的特点,未来极大概率会继续以“斐波那契”、“爬楼梯”、“青蛙跳”等经典递推模型为载体,考察循环边界判断和变量更新逻辑。暂无足够依据预测具体题型变化,但建议重点强化循环起始值与终止值的敏感度训练。

同考点真题

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