C# lambda+func实现多参递归


Func (Func Action Predicate区别和联系

       /// <summary>
        /// 多参递归函数
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <typeparam name="T1"></typeparam>
        /// <typeparam name="TResult"></typeparam>
        /// <param name="f"></param>
        /// <returns></returns>
        public static Func<T, T1, TResult> CalcuMultiArgs<T, T1, TResult>(Func<Func<T, T1, TResult>, Func<T, T1, TResult>> f)
        {
            return (x, y) => f(CalcuMultiArgs(f))(x, y);
        }

Lambd实现

var fn = CalcuMultiArgs<int, int, int>(f => (x, y) =>
            {
                var tmpresult = x * y;
                if (x > 0 || y > 0)
                {
                    return tmpresult + f(x - 1, y - 1);
                }
                else
                {
                    return tmpresult;
                }
            });
            var result = fn(3, 2);
            Console.WriteLine(result);

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM