题解 | #求解立方根#

求解立方根

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

#include <stdio.h>
#include <string.h>
#include <math.h>
// double 型
//二分法
// 浮点数判断0一般是和espi=0.000001比较
// 0-y
// x=y/2.0
// 判断大小?
//要考虑0-1 还有y是负数的情况匹配二分区间
double espi = 0.000001;
double bin(double y, double m, double n);
int main()
{

    double y;
    scanf("%lf", &y);
    double x;
    if (y >= 1)
    {
        x = bin(y, 1, y);
    }
    else if (y <= -1)
    {
        x = bin(y, y, -1);
    }
    else if (y >= 0 && y < 1)
    {
        x = bin(y, 0, 1);
    }
    else if (y <= 0 && y > -1)
    {
        x = bin(y, -1, 0);
    }

    printf("%.1lf", x);
    return 0;
}

double bin(double y, double m, double n)
{
    double ret;
    double x;
    x = (m + n) / 2.0;
    double cmp = x * x * x;
    if (fabs(y - cmp) <= espi)
    {
        ret = x;
    }
    else if (y - cmp > espi)
    {
        ret = bin(y, x, n);
    }
    else
    {
        ret = bin(y, m, x);
    }

    return ret;
}
全部评论

相关推荐

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

创作者周榜

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