Update 16. 数值的整数次方.md

调整递归时间复杂度的公式表述,补充负数指数及 Integer.MIN_VALUE 边界溢出的处理说明。
This commit is contained in:
CyC2018
2026-10-30 20:17:59 +08:00
parent 1fada135cb
commit 2452038989
+2 -3
View File
@@ -14,12 +14,11 @@
本题中子问题是 x<sup>n/2</sup>,在将子问题合并时将子问题的解与自身相乘即可。但如果 n 不为偶数,那么拆成两半还会剩下一个 x,在将子问题合并时还需要多乘一个 x。
<div align="center"> <img src="pics/pow-divide.png" width="620px"/> </div><br>
因为 x<sup>n/2</sup> 可以通过递归求解,并且每次递归 n 都减小一半,因此整个算法的时间复杂度为 O(logN)。
因为 (x\*x)<sup>n/2</sup> 可以通过递归求解,并且每次递归 n 都减小一半,因此整个算法的时间复杂度为 O(logN)。
n 为负数时,先把 x 换成 1/x,再求 x 的 -n 次方。需要注意的是,n 为 Integer.MIN_VALUE 时 -n 会溢出,因此先转成 long 再取反。
```java
public double myPow(double x, int n) {