50. Pow(x, n)
程序员文章站
2022-07-15 12:47:51
...
实现pow(x,n)函数。
这里需要注意的是x、n可正可负可为0.
1. 直接调用java的内置函数
public double myPow(double x, int n)
{
return Math.pow(x, n);
}
2. 基本思路(超时)
public double myPow(double x, int n)
{
double val = 1;
boolean flag = false; // 标记指数的正负
if (n < 0)
{
n = -n;
flag = true;
}
for (int i=0; i<n; i++)
{
val *= x;
}
return flag == true ? 1/val:val;
}
3. e^nlnx = x^n
注意这里的x>0,若x<0时,可令x = - x代换,同时还要考虑指数n的奇偶性。
public double myPow(double x, int n)
{
boolean flag = false; // 记录正负号的标志
if (x < 0)
{
x = -x;
flag = true;
}
double result = Math.exp(n * Math.log(x));
if (flag) // x < 0
{
if (n % 2 == 1) // 指数是奇数
{
return -result; // e^nlnx
}
}
return result; // e^nlnx
}
上一篇: 50. Pow(x, n)
下一篇: 50. Pow(x, n)