思路一:当指数不为负数的时候,我们直接计算即可。当指数为负数的时候我们可以对其进行一个变形 ,这样我们直接进行遍历计算即可。
import java.util.*; public class Solution { public double Power(double base, int exponent) { if(exponent < 0) { exponent = -exponent; base = 1.0 / base; } double ans = 1.0; for(int i = 1; i <= exponent; ++ i) { ans *= base; } return ans; } }
思路二:按照上述思路,我们可以使用 Java 中 Math 函数来进行求解。
import java.util.*; public class Solution { public double Power(double base, int exponent) { if(exponent > 0) return Math.pow(base, exponent); else if(exponent == 0) return 1; else return Math.pow(1.0 / base, -exponent); } }
思路三:快速幂:https://blog.nowcoder.net/n/f93bed69e38f474a839cb5105d0babc2
import java.util.*; public class Solution { public double Power(double base, int exponent) { if(exponent < 0) { exponent = -exponent; base = 1.0 / base; } return quickPow(base, exponent); } public static double quickPow(double a, int b) { double ans = 1.0, res = a; while(b > 0) { if((b & 1) != 0) ans = ans * res; res = res * res; b >>= 1; } return ans; } }