题目描述
给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。
保证base和exponent不同时为0
解题思路
先考虑特殊情况:base或exponent 为0时。
如果指数是负数的话,那应该取正指数的倒数
优化代码:右移表示除2,和1做 与运算 判断奇偶。
public class MyPower {
public double Power(double base, int exponent) {
if (exponent == 0) {
return 1;
}else if (base == 0) {
return 0;
}else if (exponent < 0) {
return 1/Power(base, -exponent);
}else if ((exponent & 1) == 1) {
return base * Power(base, exponent - 1);
}else {
return Power(base * base, exponent >> 1);
}
}
public static void main(String[] args) {
MyPower m = new MyPower();
System.out.println(m.Power(2, 9));
}
}