✏️ 纠错
第 187 题 / 共 201 题
11. 下面程序的输出为()。
#include <iostream>
using namespace std;
int fib(int n) {
    if (n == 0)
        return 1;
    return fib(n - 1)+fib(n - 2);
}
int main() {
    cout << fib(2) << endl;
    return 0;
}
📝 题目解析
答案:D
知识点:递归函数的终止条件
解析:函数缺少n=1的终止条件,当计算fib(6)时会递归到fib(-1)、fib(-2)等,陷入无限递归,无法正常结束。

fib函数仅处理n=0的情况,当n≥1时,递归调用fib(n-1)+fib(n-2)会导致n变为负数(如n=2时调用fib(1)+fib(0),fib(1)又调用fib(0)+fib(-1),fib(-1)继续递归到更小的负数,无终止条件),因此程序无法正常结束。