编写递归函数求x的n次方, 并调用此函数求2的5次方。
时间: 2024-05-11 12:18:39 浏览: 167
以下是求x的n次方的递归函数的Python代码:
```python
def power(x, n):
if n == 0:
return 1
elif n % 2 == 0:
return power(x*x, n/2)
else:
return x * power(x, n-1)
```
其中,如果n是偶数,我们通过递归调用 power(x*x, n/2) 来计算x的n次方。如果n是奇数,我们先计算x的n-1次方,然后再乘以x。
然后,我们可以调用这个函数来计算2的5次方:
```python
print(power(2, 5)) # 输出 32
```
因为 $2^5$ 等于32。
相关问题
编写递归函数求x的n次方, 并调用此函数求2的5次方。 c
以下是求 x 的 n 次方的递归函数:
```
double power(double x, int n) {
if (n == 0) {
return 1;
} else if (n % 2 == 0) {
double temp = power(x, n / 2);
return temp * temp;
} else {
double temp = power(x, (n - 1) / 2);
return x * temp * temp;
}
}
```
这个函数采用了快速幂算法,可以在 O(log n) 的时间复杂度内计算出 x 的 n 次方。
要求 2 的 5 次方,只需要调用上述函数:
```
double result = power(2, 5);
printf("%f\n", result); // 输出 32.000000
```
即可得到结果,输出为 32.000000。
用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。
阅读全文