Вычислить значение бесконечной суммы (потоки) - C#
Формулировка задачи:
Программа, которая будет вычислять значение бесконечной суммы 1-(1/1!)+(1/2!)-(1/3!)+ и т.д. с точностью E=10-6.
Как создать потоки я понял, метод для факториала брал с msdn. Понял как вычислить один факториал, но бесконечную сумму, да еще и с чередованием знаков, не понял как. Может быть через цикл...
Помогите пожалуйста!
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading;
namespace ConsoleApplication16
{
class Program
{
static int n = 3;
static double result = 0;
static void Function_of_thread()
{
result = (1.0 / factorial(n));
Console.WriteLine(result);
}
static long factorial(int n)
{
int fact = 1;
for (int i = 1; i < n; i++)
{
fact *= i;
}
return fact;
}
static void Main(string[] args)
{
for (int i = 0; i < 3; i++)
{
Thread thr = new Thread(Function_of_thread);
thr.Start();
}
Console.Read();
}
}
}Решение задачи: «Вычислить значение бесконечной суммы (потоки)»
textual
Листинг программы
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading;
namespace ConsoleApplication16
{
class Program
{
static object locker = new object();
static void Function_of_thread()
{
double result = 1;
double eps = 0.000001;
double frl;
int n = 1;
do
{
frl = 1.0 / Fact(n);
result += Math.Pow(-1, n) * frl;
n = n + 1;
Console.WriteLine("Я поток № " + Thread.CurrentThread.ManagedThreadId + " Сумма=" + result);
} while (frl > eps);
}
static long Fact(int n)
{
int res = 1;
if (n <= 1) res = 1;
else
for (int i = n; i > 1; i--)
res *= i;
return res;
}
static void Main(string[] args)
{
for (int i = 0; i < 3; i++)
{
Thread thr = new Thread(Function_of_thread);
thr.Start();
}
Console.Read();
}
}
}