Office中国论坛/Access中国论坛

标题: 【转发】lamada形式处理递归的通用方法 [打印本页]

作者: faunus    时间: 2014-2-25 09:06
标题: 【转发】lamada形式处理递归的通用方法
从老赵那学一招,不动点理论:
http://blogs.msdn.com/madst/arch ... da-expressions.aspx

  1. using System;
  2. class Program
  3. {
  4.     //Fix不动子函数,记住就行了.
  5.     static Func<T, TResult> Fix<T, TResult>(Func<Func<T, TResult>, Func<T, TResult>> f)
  6.         {return x => f(Fix(f))(x);}
  7.     static void Main()
  8.     {
  9.         //递归函数的定义,阶乘:f(x)=x*f(x-1)
  10.         var fac = Fix<int, int>(f => x => x <= 1 ? 1 : x * f(x - 1));
  11.         //方法执行
  12.         Console.WriteLine(fac(5));
  13.         Console.ReadKey();
  14.     }
  15. }
复制代码








欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) Powered by Discuz! X3.3