题目描述
实现函数double Power(double base, int exponent),求base的exponent次方。不得使用库函数,同时不需要考虑大数问题。
示例1
输入
2.00000, 10
返回值
1024.00000
示例2
输入
2.10000, 3
返回值
9.26100
示例3
输入
2.00000, -2
返回值
0.25000
解题思路
- 使用快速幂的方法解题,,而 以此类推。
- 当 n 为偶数时,
- 当 n 为奇数时,
- 当 n < 0 时,x 变为其倒数,并且 n 取绝对值。意思就是把 n 变为正整数,因为
Java代码实现
class Solution { public double myPow(double x, int n) { if (x == 0) return 0; if (n == 0) return 1; long m = n; if (n < 0) { x = 1 / x; m *= -1; } double res = 1.0; while (m > 0) { if ((m & 1) == 1) res *= x; x *= x; m >>= 1; } return res; } }