题目:
题解:
设置递增步长step为0.01,从起点0开始计算x^3,直到无限接近目标值。
注意:负数需要特殊处理
public BigDecimal getCubeRoot(BigDecimal bigDecimal) {
boolean isNegative = false;
if (bigDecimal.compareTo(BigDecimal.ZERO) < 0) {
isNegative = true;
bigDecimal = bigDecimal.multiply(new BigDecimal("-1"));
}
BigDecimal step = new BigDecimal("0.01");
BigDecimal result = BigDecimal.ZERO;
BigDecimal temp = result.multiply(result).multiply(result);
while (temp.compareTo(bigDecimal) < 0) {
result = result.add(step);
temp = result.multiply(result).multiply(result);
}
if (isNegative) {
return result.multiply(new BigDecimal("-1"));
}
return result;
}
时间复杂度:O(N)