題目描述
給定一個double類型的浮點數base和int類型的整數exponent。求base的exponent次方。
class Solution {
public:
double Power(double base, int exponent) {
double res = 1;
int n = exponent;
//判斷exponent是否爲0和負數
if(n < 0){
if(base == 0){
printf("分母不能爲0");
}
n = -n;
}
if(n == 0) {
return 1;
}
//循環運算,exponent右移一位,相當於res的平方一次;最後exponent爲1的時候,就是res本身
while(n != 0){
if((n & 1) == 1){
res *= base;
}
base *= base;
n>>=1;
}
return exponent > 0 ? res : (1/res);
}
};