题解 | #求解立方根#C语言二分查找求解

求解立方根

https://www.nowcoder.com/practice/caf35ae421194a1090c22fe223357dca

二分查找解题思路如下:

如上图随着循环次数的增加left与right会越来越逼近,直到right-left<0.001的时候循环才会停止,故而可以求得该数的开立方。
double Mysqrt(double n){
    double left=0.0,right=n,mid=(right-left)/2,a=0;
//判断输入是否为负数,取绝对值
    if(n<0){
        n=-n;
        right=n;
    }
//判断输入是否小于1,输入小于1那么二分查找的左右边界为[0,1]
    if(n<1){
        left=0;
        right=1;
    }
 //二分查找的精度是0.001
    while(right-left>0.001){
        mid=(right+left)/2;
        a=mid*mid*mid;
        if(n>a){
            left=mid;
        }else if(n<a){
            right=mid;
        }else if(n==a){
            return mid;
        }  
    }
    return left;
}

int main(){
    double s=0,a=0.0;
    scanf("%lf",&s);
    a=Mysqrt(s);
    if(s<0){
        a=-a;
    }
    printf("%.1lf",a);
    return 0;
}


#二分查找逼近while1roundabsendbegin100midroundbeginend21valmid3ifvalgtnum##华为##华为笔试##算法工程师#
全部评论

相关推荐

07-14 12:29
门头沟学院 Java
后端岗,实习三周感觉有点想跑路了,担心秋招被拉黑,有没有佬是字节HR知道情况的
从零开始的转码生活:你实习三周都想跑路,将来拿到offer真的愿意在这干十几二十年吗
投递字节跳动等公司8个岗位
点赞 评论 收藏
分享
05-26 22:25
门头沟学院 Java
Java小肖:不会是想叫你过去把你打一顿吧,哈哈哈
点赞 评论 收藏
分享
评论
2
4
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务