实现pow函数,使用Java语言

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/birduncle/article/details/66969684

题目类别:实现Pow(x, n)

题目注意点:

记住一个整数在-2147483648和2147483647的值之间
如果n = -2147483648,那么-n = 2147483648; 因此-n大于最大可能的整数值,因此-n不是整数。并记住,myPow的第二个输入n必须是一个整数。因为这里传递的值(-n)不是int,所以编译器会报错

然而,如果n = -2147483648,则 - (n + 1)= - (-2147483648 + 1)= 2147483647,其为整数; 然后我们可以将该值传递给myPow而不用编译器报错。


代码如下:

public static double myPow(double x, int n) {


if (n > Integer.MAX_VALUE || n < Integer.MIN_VALUE)
return 0;
if (n == 0)
return 1;
if (n < 0) {
return ((1 / x) * myPow(1 / x, -(n + 1)));//对于 negative integers (i.e, n = -2147483648).Example, x^(-3) = (1/x)^3 = (1/x) * (1/x)^2 = (1/x) * (1/x)^(-(-2)) = (1/x) * [(1/x)^(-(-3+1)] = 1/x * [(1/x)^2]
}
return (n % 2 == 0) ? myPow(x * x, n / 2) : x * myPow(x * x, n / 2);
}

猜你喜欢

转载自blog.csdn.net/birduncle/article/details/66969684