c语言作业:使用递归方法,求解 x 的n次方,其中 n 为整数,x 不等于0。
时间: 2023-11-30 15:09:36 浏览: 228
好的,这个问题很简单。以下是一个用递归方法求解 x 的 n 次方的 C 语言函数:
```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 {
return x * power(x, n-1);
}
}
int main() {
double x = 2.0;
int n = 10;
printf("%f\n", power(x, n));
return 0;
}
```
这个函数使用了一个递归的方法来计算 x 的 n 次方。如果 n 为 0,则返回 1,否则,如果 n 是偶数,则递归计算 x 的 n/2 次方的平方,如果 n 是奇数,则递归计算 x 的 n-1 次方,然后再乘以 x。
这个函数的时间复杂度为 O(log n),因为每次递归都会把 n 除以 2,所以最多会递归 log n 层。