【发布时间】:2019-03-01 07:47:02
【问题描述】:
我试图通过二等分然后缩小它来找到一个数字的立方根。我以这种方式有平方根的程序,但是立方根方法只是继续循环并且永远不会给出答案。我不确定我哪里出错了,需要一些建议。
public class myFunc
{
public static double squareRoot(double value, double precision)
{
double low, high, middle;
high = 1;
low = value;
middle = (high + low) / 2;
Console.WriteLine("{0,20:n12}{1,20:n12}{2,20:n12}", low, middle, high);
while ((high-low)>precision)
{
if ((middle * middle) <value)
{
low = middle;
}
else
{
high = middle;
}
middle = (high + low) / 2;
Console.WriteLine("{0,20:n12}{1,20:n12}{2,20:n12}", low, middle, high);
}
return (middle);
}
public static double cubeRoot(double value, double precision)
{
double low, high, middle;
high = value;
low = 1;
middle = (high + low) / 3;
Console.WriteLine("{0,20:n12} {1,20:n12} {2,20:n12}", low, middle, high);
while ((high - low) > precision)
{
if ((middle * middle*middle)>value)
{
high = middle;
}
else
{
low = middle;
}
middle = (high + low) / 3;
Console.WriteLine("{0,20:n12} {1,20:n12} {2,20:n12}", low, middle, high);
}
return (middle);
}
【问题讨论】:
-
其中一个使用 high=1,另一个使用 low=1。这可能就是你的无限循环的来源。