Office中国论坛/Access中国论坛
标题:
【转发】lamada形式处理递归的通用方法
[打印本页]
作者:
faunus
时间:
2014-2-25 09:06
标题:
【转发】lamada形式处理递归的通用方法
从老赵那学一招,不动点理论:
http://blogs.msdn.com/madst/arch ... da-expressions.aspx
using System;
class Program
{
//Fix不动子函数,记住就行了.
static Func<T, TResult> Fix<T, TResult>(Func<Func<T, TResult>, Func<T, TResult>> f)
{return x => f(Fix(f))(x);}
static void Main()
{
//递归函数的定义,阶乘:f(x)=x*f(x-1)
var fac = Fix<int, int>(f => x => x <= 1 ? 1 : x * f(x - 1));
//方法执行
Console.WriteLine(fac(5));
Console.ReadKey();
}
}
复制代码
欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/)
Powered by Discuz! X3.3