二分查找法计算一个数的平方根

文章介绍了如何使用二分查找法精确计算给定数值(如8)的平方根,保留特定小数位数(如6位)。通过递归和非递归方式实现,并详细解释了区间划分和比较过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

如何使用二分查找法求 8 的平方根?保留 6 位小数。

假设只精确到整数部分

如果我们只需要计算整数部分的话,那很好实现,假设要开平方的数为 value,依次二分,直到找到某一个整数的平方小于等于 value,然后这个整数加1的平方大于 value,那这个数就是开平方结果的整数部分了。

下面为 PHP 实现代码:

function calcInteger($value, $low, $high)
{
    $mid = round(($low + $high) / 2);
    $mid2 = $mid * $mid;

    if ($mid2 > $value) {
        if (($mid - 1) * ($mid - 1) <= $value) return $mid - 1;
        return calcInteger($value, 0, $mid);
    } else if ($mid2 < $value) {
        if (($mid + 1) * ($mid + 1) >= $value) return $mid;
        return calcInteger($value, $mid, $high);
    } else {
        return $mid;
    }
}

var_dump(calcInteger(8, 0, 8)); // 2

实现思路:

  1. 如果二分的中点的平方大于 value,说明整数部分肯定位于中点之前。这个时候需要特别注意的是,不能直接
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

张无忌打怪兽

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值