解题思路:
1. luodi 函数:
- 首先处理了 n 为 1 和 2 的特殊情况,直接返回相应的计算结果。
- 对于 n > 2 的情况,先计算出 luodi(m, n - 1) 和 luodi(m, n - 2) 的值,并分别存储在 prev1 和 prev2 中。然后根据递归关系计算并返回最终结果。
2. main 函数:
- 读取用户输入的 m 和 n 。
- 调用 luodi 函数计算并将结果存储在 s 中。
- 计算 h 的值时,同样根据 n 的不同情况进行处理。
- 当 n == 1 时, h = m / 2 。
- 当 n == 2 时, h = m / 4 。
- 当 n > 2 时,先计算出 luodi(m, n - 1) 和 luodi(m, n - 2) 的值,然后计算 h = (prev1 - prev2) / 8 。
- 最后以保留两位小数的格式输出 h 和 s
注意事项:
参考代码:
#include <stdio.h>
double luodi(double m, double n) {
if (n == 1) {
return m;
} else if (n == 2) {
return 2 * m;
} else if (n > 2) {
double prev1 = luodi(m, n - 1);
double prev2 = luodi(m, n - 2);
return prev1 + (prev1 - prev2) / 2;
}
return 0; // 增加默认返回值,以防意外情况
}
int main() {
double m, n;
scanf("%lf%lf", &m, &n);
double s = luodi(m, n);
double h;
if (n == 1) {
h = m / 2;
} else if (n == 2) {
h = m / 4;
} else if (n > 2) {
double prev1 = luodi(m, n - 1);
double prev2 = luodi(m, n - 2);
h = (prev1 - prev2) / 8;
}
printf("%.2lf %.2lf", h, s);
return 0;
}
0.0分
0 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复