题目描述
给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。
保证base和exponent不同时为0
解题思路:
Java代码:
public class Solution {
double power(double base,int exp) {
if (exp == 1) return base;
if ((exp & 1) == 0) {
int temp = (int) power(base, exp >> 1);
return temp * temp;
}else {
int temp =(int) power(base,(exp -1) >> 1);
return temp * temp * base;
}
}
public double Power(double base,int exp) throws Exception {
if (base == 0) {
if (exp > 0) return 0;
else if (exp == 0) return 0;
else throw invalid_argument("Invalid input!");
}else {
if (exp > 0) return power(base, exp);
else if(exp ==0) return 1;
else return 1 / power(base, -exp);
}
}
private Exception invalid_argument(String string) {
// TODO Auto-generated method stub
return null;
}
}
C++代码:
class Solution {
double power(double base, int exp) {
if (exp == 1) return base;
if ((exp & 1) == 0) {
int tmp = power(base, exp >> 1);
return tmp * tmp;
} else {
int tmp = power(base, (exp - 1) >> 1);
return tmp * tmp * base;
}
}
public:
double Power(double base, int exp) {
if (base == 0) {
if (exp > 0) return 0;
else if (exp == 0) return 0;
else throw invalid_argument("Invalid input!");
} else {
if (exp > 0) return power(base, exp);
else if (exp == 0) return 1;
else return 1 / power(base, -exp);
}
}
};