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