小杨正在爬楼梯,需要爬 $ n $ 阶才能到达楼顶。如果每次可以爬 1 个或 2 个台阶,下面代码采用递推算法来计算一共有多少种不同的方法可以爬到楼顶,则横线上应填写( )。
int f(int n) {
if (n == 1 || n == 2)
return n;
int f1 = 1;
int f2 = 2;
int res = 0;
for (int i = 3; i <= n; i++) {
// 在此处填入代码
}
return res;
}A.
res += f1 + f2;
f1 = f2;
f2 = res;B.
res = f1 + f2;
f1 = f2;
f2 = res;C.
res += f1 + f2;
f2 = res;
f1 = f2;D.
res = f1 + f2;
f2 = res;
f1 = f2;答案B。代码补全要考虑参数传递方式。如果需要修改实参,需用指针(*)传递。排序算法要理解每步比较的含义。
排序代码补全要理解每步比较的含义。选择排序找最小值时比较的是array[min]>array[j]。
【考点】递推思想|滚动变量优化|斐波那契数列
本题考查《GESP 考试大纲》四级"递推与动态规划"模块。命题人卡住的是学生"只会写递归、不懂滚动优化"的弱点——四级要求手动实现空间优化版递推。