下面程序的运行结果为( )。
#include <iostream>
using namespace std;
int f(int n) {
if (n <= 2) return n * 2;
return f(n - 1) + f(n - 2);
}
int main() {
cout << f(5) << endl;
return 0;
}模拟程序执行过程,逐行跟踪变量变化,特别关注循环边界和递归终止条件。
模拟执行时注意:① 循环变量的起始和终止值;② 递归的边界条件;③ 数据类型转换和精度问题。
【考点】递归|递推关系
GESP 七级 C++ 递归章节,命题人卡住的是递归边界识别——70% 考生看到 n <= 2 就慌了,要么误判为 n < 2 漏掉 f(2),要么想当然套用斐波那契基础值 f(1)=1, f(2)=1,完全没注意到这题的边界返回值是 n*2。