c语言实现,给出一个整数a和一个正整数n,求乘方an,即乘方结果。
时间: 2024-10-21 12:13:05 浏览: 47
在C语言中,你可以使用循环或者递归来计算一个整数a的幂次n。以下是两种方法:
1. **循环实现** (适用于较大的n值,因为递归可能会导致栈溢出)
```c
#include <stdio.h>
long long power(int a, int n) {
long long result = 1; // 初始化结果为1
while (n > 0) { // 当n大于0时继续循环
if (n % 2 == 1) { // 如果n是奇数
result *= a;
}
a *= a; // 每次将a自乘
n /= 2; // n除以2,相当于每次迭代都将指数减半
}
return result;
}
int main() {
int a, n;
printf("请输入底数a和指数n:");
scanf("%d%d", &a, &n);
printf("a的n次方的结果是:%lld\n", power(a, n));
return 0;
}
```
2. **递归实现** (对于较小的n值,递归更简洁,但对于大数值可能导致栈溢出)
```c
#include <stdio.h>
long long power(int a, int n) {
if (n == 0) { // 如果n为0,任何数的0次方都是1
return 1;
} else if (n % 2 == 0) { // 如果n是偶数
long long temp = power(a, n / 2); // 计算一半的幂
return temp * temp;
} else { // 如果n是奇数
long long temp = power(a, (n - 1) / 2); // 计算一半的幂
return a * temp * temp;
}
}
// ...其他主函数部分...
```
记得在实际应用中处理边界条件,例如当n为负数的情况。
阅读全文