实现pow函数,使用Java语言

题目类别:实现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);
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值