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;
 }
Exemple #2
0
        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();
        }
Exemple #3
0
 static RecursiveTask <int> Factorial(int n, int a)
 {
     if (n == 0)
     {
         return(a);
     }
     return(RecursiveTask <int> .FromFunc(() => Factorial(n - 1, n *a)));
 }
Exemple #4
0
 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;
 }