默认 4.0版本 id:193】【12分】G. 实验10-2 递归实现指数函数 (15 分) 题目描述 本题要求实现一个计算x n (n≥1)的函数。 主函数参考如下: #include <stdio.h> double calc_pow( double x, int n ); int main() { double x; int n; scanf("%lf %d", &x, &n); printf("%.0f\n", calc_pow(x, n)); return 0; } /* 你的代码将被嵌在这里 */ 输入 函数接口定义: double calc_pow( double x, int n ); 函数calc_pow应返回x的n次幂的值。建议用递归实现。题目保证结果在双精度范围内。 输出 见样例 C
时间: 2024-03-15 15:45:24 浏览: 88
非常抱歉,刚才的代码实现有误。下面是经过修正后的代码,希望对你有所帮助:
```c
#include <stdio.h>
double calc_pow(double x, int n);
int main() {
double x;
int n;
scanf("%lf %d", &x, &n);
printf("%.0f\n", calc_pow(x, n));
return 0;
}
double calc_pow(double x, int n) {
if (n == 0) {
return 1;
} else if (n == 1) {
return x;
} else if (n % 2 == 0) {
double temp = calc_pow(x, n / 2);
return temp * temp;
} else {
double temp = calc_pow(x, (n - 1) / 2);
return x * temp * temp;
}
}
```
该函数使用了递归的思想,将指数n不断折半,以达到更快的计算速度。注意,当指数为0或1时,直接返回1或x即可。
阅读全文