c++整数的整数次方
时间: 2024-04-29 13:19:13 浏览: 85
要计算整数的整数次方可以使用暴力求解或者使用二分法。下面是两种方法的示例代码:
方法一:暴力求解
```c++
class Solution {
public:
double Power(double base, int exponent) {
bool isFu = false;
if(exponent < 0) {
exponent *= (-1);
isFu = true;
}
double res = 1;
for(int i = 0; i < exponent; i++) {
res *= base;
}
if(isFu) return 1/res;
return res;
}
};
```
方法二:使用二分法
```c++
class Solution {
public:
double Power(double base, int exponent) {
bool isFu = false; // 判断是否为负数次方根
if(exponent < 0) {
exponent *= (-1);
isFu = true;
}
bool isStrange = false; // 判断是否为奇数
if(exponent % 2 != 0) {
isStrange = true;
exponent -= 1;
}
int count = 0; // 记录除2次数
while(exponent != 0 && exponent % 2 == 0) {
count++;
exponent /= 2;
}
double res = 1; // 记录结果
// 该情况exponent一开始为奇数,比如7,那么7-1 = 6,6/2 = 3,即不管如何都应该进行3次暴力乘法
for(int i = 0; i < exponent; i++) {
res *= base;
}
// 通过记录的count次数,本身*本身即可。
for(int i = 0; i < count; i++) {
res *= res;
}
// 如果为奇数,还应该进行一次乘法
if(isStrange) {
res *= base;
}
// 如果为负数次方根
if(isFu) return 1/res;
return res;
}
};
```
以上就是两种计算整数次方的方法,可以根据具体需求选择合适的方法进行计算。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* *2* *3* [数值的整数次方(C++)](https://blog.csdn.net/qq135595696/article/details/125091372)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"]
[ .reference_list ]
阅读全文