【发布时间】:2016-11-28 16:45:19
【问题描述】:
尝试使用二进制搜索计算数字的平方根,但是我的实现不起作用,我不知道为什么 - 任何帮助表示感谢,谢谢
这是我的代码。 'end' 是我想要平方根的数字的值
while(start <= end) {
float mid = ((start + end) / 2);
printf("\nhalving mid");
if(mid * mid == end){
sqrt = mid;
printf("\nsqrt = %d", sqrt);
}
if(mid * mid < end){
start = mid + 1;
sqrt = mid;
printf("\nsqrt: %d", sqrt);
}
else{
start = mid - 1;
}
}
【问题讨论】:
-
您的代码 sn-p 中的输入究竟是什么?
-
没有输入我将它用作平方根函数,其中'end'是我想要找到平方根的数字
-
您的代码将打印小于平方根的值,继续直接命中,并陷入无限循环。很抱歉不得不告诉你这一点,但你必须先完成一些简单的练习,然后再尝试。
-
如果这不仅仅是为了好玩或训练,请使用收敛速度更快的牛顿迭代。 (暂时忽略 Math.sqrt)。
-
使用调试器或打印每个步骤中的间隔结束,以查看为什么您的实现动态会在某个时候停止。升一降一,无限重复。