用C语言编写一个函数实现n^k(n的k次方),使用递归实现。
时间: 2024-02-03 08:02:43 浏览: 31
好的,以下是一个使用递归实现n^k的C函数:
```c
#include <stdio.h>
int power(int n, int k) {
if (k == 0) {
return 1;
} else if (k % 2 == 0) {
return power(n * n, k / 2);
} else {
return n * power(n, k - 1);
}
}
int main() {
int n, k;
printf("请输入底数n和指数k:");
scanf("%d%d", &n, &k);
printf("%d的%d次方是%d\n", n, k, power(n, k));
return 0;
}
```
这个函数与之前提供的Python版本的函数非常相似。当k为0时,返回1,递归终止。如果k为偶数,则可以将n^k拆分为(n^2)^(k/2),可以递归计算(n^2)^(k/2)。如果k为奇数,则可以将n^k拆分为n * n^(k-1),同样可以递归计算n^(k-1)。
相关问题
用c语言递归设计一个函数用来计算B的n次方
好的,我可以帮你设计一个用递归实现计算B的n次方的C函数。具体实现如下:
```c
#include <stdio.h>
double power(double b, int n) {
if (n == 0) {
return 1;
}
else if (n % 2 == 0) {
double temp = power(b, n / 2);
return temp * temp;
}
else {
double temp = power(b, (n - 1) / 2);
return temp * temp * b;
}
}
int main() {
double b;
int n;
printf("请输入底数B和指数n:");
scanf("%lf %d", &b, &n);
printf("%.2f的%d次方结果为:%.2f\n", b, n, power(b, n));
return 0;
}
```
这段代码中,`power`函数采用了分治的思想,当n=0时,返回1;当n为偶数时,将问题转化为计算B的n/2次方的平方;当n为奇数时,先计算B的(n-1)/2次方的平方,再乘上B。
在主函数中,用户输入底数B和指数n,并调用`power`函数计算B的n次方,并输出计算结果。
c语言编写求x的n次方的递归函数
以下是求x的n次方的递归函数的C语言代码:
```c
double power(double x, int n) {
if (n == 0) {
return 1.0;
} else if (n < 0) {
return 1.0 / power(x, -n);
} else if (n % 2 == 0) {
double y = power(x, n / 2);
return y * y;
} else {
return x * power(x, n - 1);
}
}
```
该函数使用了递归的方式来求解x的n次方,其中当n为0时返回1,当n为负数时返回x的-n次方的倒数,当n为偶数时使用递归的方式求解x的n/2次方的平方,当n为奇数时使用递归的方式求解x的n-1次方并乘以x。