刷题刷出新高度,偷偷领先!偷偷领先!偷偷领先! 关注我们,悄悄成为最优秀的自己!

单选题

执行以下代码,输出的结果是( )。

#include <iostream>
using namespace std;
int f(int k)
{
if(k<= 2) return 1;
return 2 * f(k - 2) + f(k - 1);
}
int main()
{
int n = 7;
cout << f(n);
return 0;
}


A

21

B

41

C

43

D

45

使用微信搜索喵呜刷题,轻松应对考试!

答案:

B

解析:

【喵呜刷题小喵解析】

首先,我们分析给定的递归函数 `f(k)`:


```cpp
int f(int k)
{
if(k <= 2) return 1;
return 2 * f(k - 2) + f(k - 1);
}
```
这个函数的定义表明:

* 当 `k` 小于或等于2时,函数返回1。
* 当 `k` 大于2时,函数返回 `2 * f(k - 2) + f(k - 1)`。

现在,我们按照 `n = 7` 来计算 `f(7)`:

1. `f(7) = 2 * f(5) + f(6)`
2. `f(6) = 2 * f(4) + f(5)`
3. `f(5) = 2 * f(3) + f(4)`
4. `f(4) = 2 * f(2) + f(3)`
5. `f(3) = 2 * f(1) + f(2)`
6. `f(2) = 1` 和 `f(1) = 1`

继续上面的计算,我们得到:

* `f(4) = 2 * 1 + 1 = 3`
* `f(5) = 2 * 3 + 1 = 7`
* `f(6) = 2 * 7 + 3 = 17`
* `f(7) = 2 * 17 + 7 = 41`

所以,`f(7)` 的值是41,因此输出的结果是41,对应选项B。
创作类型:
原创

本文链接:执行以下代码,输出的结果是( )。 #include <iostream> using namesp

版权声明:本站点所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明文章出处。

让学习像火箭一样快速,微信扫码,获取考试解析、体验刷题服务,开启你的学习加速器!

分享考题
share