保证base和exponent不同时为0
思路
普通迭代,时间复杂度O(n),空间复杂度O(1)。
折叠迭代,时间复杂度O(lgn),空间复杂度O(1)。
Java函数
public class Solution {
public double Power(double base, int exponent) {
return Math.pow(base, exponent);
}
}
普通迭代
public class Solution {
public double Power(double base, int exponent) {
if(base == 0) return 0;
double ans = 1.0d;
int e = exponent < 0 ? -exponent : exponent;
while(e-- > 0) {
ans *= base;
}
return exponent < 0 ? 1 / ans : ans;
}
}
折叠迭代
public class Solution {
public double Power(double base, int exponent) {
if(base == 0) return 0;
double ans = 1.0d;
int e = exponent < 0 ? -exponent : exponent;
while(e > 0) {
if(e%2 == 1) {
ans *= base;
}
base *= base;
e >>= 1;
}
return exponent < 0 ? 1 / ans : ans;
}
}