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