无限系列:While循环以无穷大结束

Infinite Series: While loop ends in infinity

我想计算一个序列,但我的 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");

}

但是我的代码导致了无限循环。您有什么想法吗?我该如何实现?

你一直在循环,直到 sum 非常小;你应该循环直到 increment 非常小:

var delta = e;
do
{
  delta = x / Math.Pow(2,n);
  sum = sum + delta;
  n++;
} while (delta >= e);