Algorithm
本周的 LeetCode 题目为 50. Pow(x, n)
实现 pow(x, n) ,即计算 x 的 n 次幂函数(即,xn)。
输入:x = 2.00000, n = 10
输出:1024.00000
输入:x = 2.00000, n = -2
输出:0.25000
解释:2^-2 = (1/2)^2 = 1/4 = 0.25
为了使用二分法,需要首先保证 n 永远为正值,故需要对x的n次方进行转换。首先对 n 进行判断,若 n < 0,xn等于 pow(1/x, -n),当 n = 0或1 时,pow(x, n) 永远为 x,只有当 n>1 时,x的n次方就是计算 pow(x,n)。在真正计算xn函数calPow(double x, long n)
中,若 n==0
则返回1,先通过递归得到xn/2的结果tmp,若n为偶数,那么最后结果为 tmp*tmp
;若n为奇数,那么最后结果为 tmp*tmp*x
,代码如下:
class Solution {
public double myPow(double x, int n) {
if (x == 0 || x == 1) {
return x;
}
if (n > 0) {
return calPow(x, n);
} else if (n < 0) {
return calPow(1/x, -n);
} else {
return 1;