Пример #1
0
        public static T Factorial <T>(
            this IExpressionEvaluator <T> evaluator,
            T @base
            ) where T : struct, IComparable <T>, IEquatable <T>
        {
            var sequence = evaluator.Sequence(
                @base,
                (ev, n, i) => ev.Subtract(n, ev.GetValue(1)),
                (ev, n, i) => n.CompareTo(ev.GetValue(0)) > 0
                );
            var result = evaluator.Product(sequence);

            return(result);
        }