用c语言编写一个递归函数求A的b次方,从键盘输入A和b,考虑b>=0和b<0两种情况。
时间: 2024-02-13 11:00:12 浏览: 85
好的,以下是 C 语言代码实现:
```c
#include <stdio.h>
double power(double base, int exponent);
int main() {
double a;
int b;
printf("请输入底数 A:");
scanf("%lf", &a);
printf("请输入指数 B:");
scanf("%d", &b);
double result = power(a, b);
printf("%.2lf 的 %d 次方为:%.2lf", a, b, result);
return 0;
}
double power(double base, int exponent) {
if (exponent == 0) {
return 1;
} else if (exponent < 0) {
return 1 / power(base, -exponent);
} else {
return base * power(base, exponent - 1);
}
}
```
该函数 `power()` 实现了递归求幂,当指数为 0 时返回 1,当指数为负数时返回 1/底数的指数幂,否则返回底数乘以自身的(指数-1)次幂。在主函数中,从键盘输入底数 A 和指数 B,调用函数 `power()` 求出 A 的 B 次方,并输出结果。
希望能够帮到您!
相关问题
用C语言编写递归函数求x的n次方, 并调用此函数求2的5次方。
以下是用C语言编写递归函数求x的n次方的代码:
```c
#include <stdio.h>
double power(double x, int n) {
if (n == 0) {
return 1;
} else if (n % 2 == 0) {
double y = power(x, n / 2);
return y * y;
} else {
double y = power(x, (n - 1) / 2);
return x * y * y;
}
}
int main() {
double result = power(2, 5);
printf("2的5次方等于%.0f\n", result);
return 0;
}
```
在这个递归函数中,如果n等于0,返回1;如果n是偶数,返回x的n/2次方的平方;如果n是奇数,返回x乘以x的(n-1)/2次方的平方。这个函数的时间复杂度是O(log n),因为每次递归都将n减半,所以最多需要递归log n次。
在main函数中,我们调用了power函数,求2的5次方,得到结果32。
C语言:编写递归函数求x的n次方, 并调用此函数求2的5次方。
好的,这是一个关于 C 语言的编程问题。可以使用递归算法来实现求 x 的 n 次方的功能。以下是一个示例代码:
```
#include <stdio.h>
double power(double x, int n)
{
if (n == 0)
{
return 1.0;
}
else if (n == 1)
{
return x;
}
else
{
double t = power(x, n/2);
if (n%2 == 0)
{
return t*t;
}
else
{
return t*t*x;
}
}
}
int main()
{
double result = power(2.0, 5);
printf("2^5 = %f\n", result);
return 0;
}
```
输出结果为:
```
2^5 = 32.000000
```
阅读全文