用c语言解决下列问题:采用递归方法计算x的n次方。 **输入格式要求:"%d%d" 提示信息:"x=? n=?" **输出格式要求:"%d**%d=%d\n" 程序运行示例如下: x=? n=?2 8 2**8=256
时间: 2023-09-01 10:07:53 浏览: 99
C语言中利用递归的方式得到n!
5星 · 资源好评率100%
以下是计算x的n次方的递归方法的C语言代码:
```
#include <stdio.h>
int power(int x, int n) {
if (n == 0) {
return 1;
} else if (n % 2 == 0) {
int y = power(x, n/2);
return y * y;
} else {
return x * power(x, n-1);
}
}
int main() {
int x, n;
printf("x=? n=?");
scanf("%d%d", &x, &n);
int result = power(x, n);
printf("%d**%d=%d\n", x, n, result);
return 0;
}
```
程序思路:
- 如果n等于0,则返回1;
- 如果n是偶数,则计算x的n/2次方,然后平方得到x的n次方;
- 如果n是奇数,则计算x的n-1次方,然后乘以x得到x的n次方。
递归终止条件是n等于0。在递归过程中,每次n都会减小,最终达到终止条件。
这个算法的时间复杂度是O(logn),因为每次递归都会把n减半,所以总共最多递归logn次。
阅读全文