GESP 四级 · GESP 202512 C++ 四级 第 9 题

选择题 · 答案 B · 考点:递推、迭代器

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

题目

给定函数 climbStairs(int n) 的定义如下,则 climbStairs(5) 的返回的值是( )。

int climbStairs(int n) {
    if(n <= 2) return n;
    int a = 1, b = 2;
    for(int i = 3; i <= n; i++) {
        int temp = a + b;
        a = b;
        b = temp;
    }
    return b;
}
答案:B

考点

递推迭代器

解题思维

答案B。>=是大于等于比较运算符,>>=是右移赋值运算符(a>>=3等价于a=a>>3)。两者都是合法的C++运算符。

常见错误

>=是右移赋值运算符,不是比较运算符。a>>=3相当于a=a>>3,将a右移3位。

详细解析(节选)

【考点】递推|迭代|斐波那契数列

GESP四级《递推与迭代》模块,卡住只会写通项公式、不会迭代的考生

命题人用斐波那契数列考你迭代实现,而非简单套公式

n≤2直接返回n,是边界条件反复跳过的典型陷阱

循环里a,b交替赋值,是迭代递推的模板代码

看到n≤2直接返回n,先锁定base case

循环里a,b交替赋值,是迭代递推的模板代码

每次i增加1,b就变成F(i),最终b=F(5)

斐波那契数列:1,2,3,5,8… 故n=5时答案为8

选A者把n当成答案,没看懂循环在算F(n)

选D者想成1+2+3+4+5=15,又强行凑成10

选C者误以为循环次数是n,算到F(7)=13

最阴险的是:i从3开始,循环仅执行n-2次

若把n≤2改成n≤1,base case就变了,答案会不同

若把循环改成累加,就考等差数列求和,而非斐波那契

刷到类似题,先问"命题人想考我什么"

同考点真题

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