求平方根算法

使用二分查找法(Binary Search)来计算一个正数的平方根,可以通过迭代地缩小搜索区间来逼近目标值。以下是使用二分查找法实现求平方根的C++代码:

 

```cpp

#include <iostream>

 

double binarySearchSqrt(double target, double epsilon = 1e-10) {

    if (target < 0) {

        throw std::invalid_argument("Cannot compute the square root of a negative number.");

    }

 

    double low = 0.0;

    double high = std::max(1.0, target); // 确保high至少为1,以防target小于1

    double mid;

 

    while (high - low > epsilon) {

        mid = (high + low) / 2.0;

        double midSquared = mid * mid;

 

        if (midSquared > target) {

            high = mid;

        } else {

            low = mid;

        }

    }

 

    return low;

}

 

int main() {

    double number;

    std::cout << "Enter a number: ";

    std::cin >> number;

 

    try {

        double result = binarySearchSqrt(number);

        std::cout << "The square root of " << number << " is approximately " << result << std::endl;

    } catch (const std::invalid_argument& e) {

        std::cerr << "Error: " << e.what() << std::endl;

    }

 

    return 0;

}

```

 

在这个实现中,`binarySearchSqrt`函数接受一个目标值`target`和一个可选的精度`epsilon`。函数首先检查目标值是否为负数,如果是,则抛出异常。然后,函数初始化搜索区间的两端`low`和`high`,对于`high`,如果`target`小于1,那么`high`被设为1,否则`high`被设为`target`本身。

 

在循环中,函数计算区间的中点`mid`,并检查`mid`的平方是否大于、等于或小于`target`。根据比较结果,调整搜索区间。循环将继续,直到搜索区间的宽度小于`epsilon`,此时认为找到了足够接近的平方根。

 

最后,在`main`函数中,用户输入一个数字,调用`binarySearchSqrt`函数计算其平方根,并输出结果。如果输入的是负数,程序会捕获异常并输出错误信息。

 

请注意,这个方法适用于正数,对于非常大的数字或非常接近零的数字,可能需要调整初始的`low`和`high`值以提高算法的效率和准确性。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值