diff --git a/notes/16. 数值的整数次方.md b/notes/16. 数值的整数次方.md index 7760cb09..a57c5afd 100644 --- a/notes/16. 数值的整数次方.md +++ b/notes/16. 数值的整数次方.md @@ -14,12 +14,11 @@ 本题中子问题是 xn/2,在将子问题合并时将子问题的解与自身相乘即可。但如果 n 不为偶数,那么拆成两半还会剩下一个 x,在将子问题合并时还需要多乘一个 x。 - -

+因为 xn/2 可以通过递归求解,并且每次递归 n 都减小一半,因此整个算法的时间复杂度为 O(logN)。 -因为 (x\*x)n/2 可以通过递归求解,并且每次递归 n 都减小一半,因此整个算法的时间复杂度为 O(logN)。 +n 为负数时,先把 x 换成 1/x,再求 x 的 -n 次方。需要注意的是,n 为 Integer.MIN_VALUE 时 -n 会溢出,因此先转成 long 再取反。 ```java public double myPow(double x, int n) {