Pow(x, n)
Implement pow(x, n).
解题思路:
一开始的想法就是简单的一个一个乘...果断TLE了。后面想了以下,应该得用递归的方式,每次都是平方这样来乘,计算复杂度也会降到log2(n)。
然后又有一个问题就是n取 -2^32次方的时候,不能直接用n = -n。所以我用一个index来存储n的符号,这样在下一次递归,n = n/2的时候乘以index就不会出现溢出了。
public class Solution {
public double myPow(double x, int n) {
int index = 1;
if(n == 0)
return 1;
if(n < 0)
{
index = -1;
x = 1/x;
}
if(n%2 == 0)
return myPow(x*x,n/2*index);
else
return x*myPow(x*x,n/2*index);
}
}