【C++模版】求x的y次幂(函数模版) 【问题描述】 编写模板函数power(x, y),返回x的y次幂,函数的第一个参数为底数x,可以为任意数值类型;第二个参数为y为幂,类型为整数;返回值类型与底数类型相同。 注:考虑0次幂的情况,输出为1 【输入形式】输入数据有多2,第1个行输入2个整数,第2行第1个为实数,第2个数必须为整数 【输出形式】输出2行,每行输出一个结果
时间: 2024-01-21 08:17:27 浏览: 65
yxy版c++教程 浅谈矩阵快速幂
以下是C++的代码实现:
```cpp
#include <iostream>
using namespace std;
template <typename T>
T power(T x, int y) {
if (y == 0) {
return 1;
} else if (y % 2 == 0) {
T temp = power(x, y / 2);
return temp * temp;
} else {
T temp = power(x, (y - 1) / 2);
return x * temp * temp;
}
}
int main() {
int a, b;
cin >> a >> b;
cout << power(a, b) << endl;
double c;
int d;
cin >> c >> d;
cout << power(c, d) << endl;
return 0;
}
```
其中,模板函数 `power` 的定义如下:
```cpp
template <typename T>
T power(T x, int y) {
if (y == 0) {
return 1;
} else if (y % 2 == 0) {
T temp = power(x, y / 2);
return temp * temp;
} else {
T temp = power(x, (y - 1) / 2);
return x * temp * temp;
}
}
```
这里采用了递归的方式实现幂的计算。当幂为0时,返回1;当幂为偶数时,递归计算一半的幂值,然后平方;当幂为奇数时,先递归计算一半的幂值,然后将基数乘上这一半的幂值的平方。
在 `main` 函数中,首先读入两个整数 a 和 b,计算 a 的 b 次幂并输出;然后读入一个实数 c 和一个整数 d,计算 c 的 d 次幂并输出。
阅读全文