小杨的机器人正在能量踏板上跳跃,踏板编号为 $1,2,\ldots,n$。跳到第 $n$ 块踏板的方案数满足递推式 $f(n)=f(n-1)+f(n-2)$。若 $f(1)=1$,$f(2)=2$,则运行以下代码计算 jump(5) 的结果是( )。
int jump(int n) {
if (n <= 2)
return n;
int a = 1, b = 2, c = 0;
for (int i = 3; i <= n; i++) {
c = a + b;
a = b;
b = c;
}
return c;
}答案B。考点: 循环结构——for/while的执行与嵌套。
关键提醒:C++中的^是异或运算符,不是乘方!2^5=7而非32。这是最高频的错误。
【考点】递推、迭代优化、Fibonacci 数列
GESP 四级「算法基础」模块。四级开始要求用迭代/空间优化替代最坏递归,命题人专门卡住「会写递推式但不会优化空间」的半吊子。