数值的整数次方
##题目描述
给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。
保证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;
}
}
浙公网安备 33010602011771号