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

use*_*539 1 c# math series infinite while-loop

我想计算一个系列,但我没有得到我的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");

}
Run Code Online (Sandbox Code Playgroud)

但我的代码导致无限循环.你有什么想法,我怎么能实现它?

D S*_*ley 5

你循环直到总和非常小; 你应该循环,直到增量非常小:

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