private RecursiveTask(Func <RecursiveTask <T1, T2>, T1, T2> func) { _func = func; _allTasks = new Dictionary <T1, RecursiveTask <T1, T2> >(); _subTasks = new List <RecursiveTask <T1, T2> >(); _rootTask = this; }
static void Main(string[] args) { var path = @"D:\algorithms\03._Алгебраические_алгоритмы\4.Fibo-19350-d13012\4.Fibo"; Console.WriteLine("-------------------GoldenRatio------------------------"); ITask goldenRatioTask = new GoldenRatioTask(); Tester goldenRatioTester = new Tester(goldenRatioTask, path); goldenRatioTester.RunTests(); Console.WriteLine("-------------------MatrixMultiplication------------------------"); ITask matrixMultiplicationTask = new MatrixMultiplicationTask(); Tester matrixMultiplicationTester = new Tester(matrixMultiplicationTask, path); matrixMultiplicationTester.RunTests(); Console.WriteLine("-------------------Iterative------------------------"); ITask iterativeTask = new IterativeTask(); Tester iterativeTester = new Tester(iterativeTask, path); iterativeTester.RunTests(); Console.WriteLine("-------------------Recursive------------------------"); ITask recursiveTask = new RecursiveTask(); Tester recursiveTester = new Tester(recursiveTask, path); recursiveTester.RunTests(); Console.ReadKey(); }
static RecursiveTask <int> Factorial(int n, int a) { if (n == 0) { return(a); } return(RecursiveTask <int> .FromFunc(() => Factorial(n - 1, n *a))); }
static RecursiveTask <int> Fib(int n, int a, int b) { if (n == 0) { return(a); } if (n == 1) { return(b); } return(RecursiveTask <int> .FromFunc(() => Fib(n - 1, b, a + b))); }
static int Fib(int num) { return(RecursiveTask <int, int> .Create((t, n) => { if (n == 0) { return 0; } if (n == 1) { return 1; } return t.Run(n - 1) + t.Run(n - 2); }).Run(num)); }
private RecursiveTask(Func <RecursiveTask <T1, T2>, T1, T2> func, T1 arg, RecursiveTask <T1, T2> rootTask) : this(func) { _arg = arg; _rootTask = rootTask; }