题目重述
实现 pow(x, n) ,即计算 x 的 n 次幂函数(即,xn)。
示例 1:
输入:x = 2.00000, n = 10 输出:1024.00000
示例 2:
输入:x = 2.10000, n = 3 输出:9.26100
示例 3:
输入:x = 2.00000, n = -2 输出:0.25000 解释:2-2 = 1/22 = 1/4 = 0.25
提示:
-100.0 < x < 100.0 -231 <= n <= 231-1 -104 <= xn <= 104
来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/powx-n 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
思路实现
本题的暴力解法是n个x循环相乘,我们可以利用分治法 去递归,能够减少乘的次数,从而提高时间复杂度。
但注意一定要用long去接一下int,即把n转成long
这是因为当n为Integer,MIN_VALUE(-2147483648)时候, 去调用-n会变成2147483648,也就是-2147483648, 不断地调用,那么就会溢出
Java实现
class Solution {
public double myPow(double x, int n) {
long ln = n;
return pow2(x,ln);
}
public double pow2(double x ,long n)
{
if(n == 0)
{
return 1;
}
if(n == 1)
{
return x;
}
if(n < 0)
{
return 1/pow2(x,-n);
}
if(n%2==0)
{
return pow2(x*x,n/2);
}
return x * pow2(x,n-1);
}
}
|