You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求C语言平方根近似计算代码的时间复杂度

平方根近似计算代码的时间复杂度分析

我在C语言中实现平方根近似计算时,得到了如下代码,想知道它的时间复杂度:

float squareroot(float n)
{
    float x = n;
    float y = 1;
    float e = 0.001; // Accuracy level
    if (n == 0)
        return 0;
    while ((x - y) > e)
    {
        x = (x + y) / 2;
        if (n == 0 || x == 0)
            return 0;
        y = n / x;
    }
    return x; 
}

时间复杂度分析

这段代码用的是**巴比伦法(牛顿迭代法的变体)**来逼近平方根,它的时间复杂度是 O(log(n/ε)),其中ε是代码里设定的精度(此处为0.001)。

核心逻辑是:每次迭代时,x和y的差值会以指数级速度收敛到真实的平方根值。迭代次数只和输入值n的大小、设定的精度ε的对数相关——只要精度固定,不管n的取值多大,迭代次数都是常数级的,通常只需要几次循环就能达到精度要求。

这种迭代逼近的方式不会随着n的增大线性增加循环次数,而是以对数级的速度快速收敛,因此时间复杂度属于对数级。

内容的提问来源于stack exchange,提问作者Andy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 21:40:41