我想计算一个系列,但我没有得到我的do..while循环正确。 用户输入x,然后总结如下: sum = sum + x / 2 ^ n,其中n是运行变量。
这必须循环,直到总和<= 0.00001。
然后程序将通知用户总和的值以及运行变量的大小。
到目前为止我的代码:
public static int n = 0;
static void Main(string[] args)
{
double x, sum = 0, e = 0.00001;
Console.Write("input x: ");
x = Convert.ToDouble(Console.ReadLine());
do
{
sum = sum + x / Math.Pow(2,n);
n++;
} while (sum >= e);
Console.WriteLine ("Sum = " + sum + ", " + n + " count");
}
但我的代码导致无限循环。你有什么想法,我怎么能实现它?
答案 0 :(得分:5)
你循环直到总和非常小;你应该循环直到增量非常小:
var delta = e;
do
{
delta = x / Math.Pow(2,n);
sum = sum + delta;
n++;
} while (delta >= e);