您的位置:首页 > 编程语言 > Java开发

[leetcode]50. Pow(x, n)@Java解题报告

2017-07-30 11:04 429 查看
https://leetcode.com/problems/powx-n/description/

Implement pow(x, n).
比较简单的题,分而治之思想

package go.jacob.day730;

import org.junit.Test;

public class Demo3 {
@Test
public void testName() throws Exception {
System.out.println(myPow_byme(34.00515, -3));
}

public double myPow(double x, int n) {
if (x == 0)
return 0;
if (n < 0)
return 1 / power(x, -n);
else
return power(x, n);
}

private double power(double x, int n) {
if (n == 0)
return 1;
double half = power(x, n / 2);
if (n % 2 == 0)
return half * half;
else
return half * half * x;
}

/*
* 我的解法:287/300 passed .超时
*/
public double myPow_byme(double x, int n) {
if (x == 0)
return 0;
if (n == 0)
return 1;
boolean flag = false;
if (n < 0)
flag = true;
double res = solve_1(x, Math.abs(n));

return flag ? 1 / res : res;
}

private double solve_1(double x, int n) {
if (n == 0)
return 1;
double product = x;
int index = 1;
while (index + index <= n) {
product *= product;
index += index;
}

return product * solve_1(x, n - index);
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: