计算一个浮点数的立方根,不使用库函数。保留一位小数。
数据范围:∣val∣≤20 。
待求解参数,为double类型(一个实数)
输出参数的立方根。保留一位小数。
function cubeRoot(val) {
// 初始化低位low为0
let low = 0;
// 高位high为输入的值
let high = val;
let flag = 0;
// 如果小于0,将标志flag设为1,并将输入取绝对值
if (val < 0) {
flag = 1;
val = -val;
if (val < 1.0) {
high = 1;
} else {
high = val;
}
// 如果输入小于1,则将高位设为1
} else if (val < 1) {
high = 1;
}
while (true) {
let target = low + (high - low) / 2;
let d = val / (target * target) - target;
// 近似的立方根
if (d >= -0.1 && d <= 0.1) {
return flag ? -parseFloat(target.toFixed(1)) : parseFloat(target.toFixed(1));
} else if (d > 0.1) {
low = target;
} else {
high = target;
}
}
}
下一篇:华为OD机试真题 JavaScript 实现【相对开音节】【2022Q4 100分】,附详细解题思路
本文收录于,华为OD机试(JavaScript)真题(A卷+B卷)
每一题都有详细的答题思路、详细的代码注释、样例测试,订阅后,专栏内的文章都可看,可加入华为OD刷题群(私信即可),发现新题目,随时更新,全天CSDN在线答疑。