Вычислить значение бесконечной суммы (потоки) - 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();
- }
- }
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д