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