写一函数,计算x的y次方(假设x、y都为正整数)
时间: 2024-09-09 21:01:11 浏览: 48
以下是一个计算x的y次方的C++函数实现,使用了递归的方法:
```cpp
#include <iostream>
// 函数声明
long long power(int x, int y);
int main() {
int x, y;
std::cout << "请输入x和y的值(x和y都是正整数): ";
std::cin >> x >> y;
// 防止溢出,将结果定义为long long类型
long long result = power(x, y);
std::cout << x << " 的 " << y << " 次方等于 " << result << std::endl;
return 0;
}
// 递归计算x的y次方
long long power(int x, int y) {
if (y == 0) return 1; // 任何数的0次方都是1
long long temp = power(x, y / 2); // 递归调用,计算一半次方
if (y % 2 == 0) {
return temp * temp; // 如果y是偶数,直接返回temp的平方
} else {
return x * temp * temp; // 如果y是奇数,先乘以x再返回temp的平方
}
}
```
这段代码定义了一个名为`power`的函数,它通过递归的方式计算x的y次方。为了防止整数溢出,结果类型定义为`long long`。如果`y`为0,则根据数学定义,任何数的0次方都是1。当`y`是偶数时,函数利用了`(x^y) = (x^(y/2))^2`的性质来减少乘法的次数;如果`y`是奇数,则先递归计算`(x^(y/2))^2`然后乘以`x`。
阅读全文