摘要: lambda是匿名函数,因为没有名字,也没有关键字引用自身,因此递归的编码就成了问题。一、最简单有效的方案是:Func<int,int> f =null; //变量须先赋值才能使用f = n=> n==0?1:n*f(n-1);f(11); //==39916800有人担心f会被恶意修改,因为就是一个委托变量,而且认为f是委托,而不是匿名函数自身,所以不算匿名函数递归。我觉得,虽然是委托,但是引用的就是匿名函数,函数指针调用的函数难道不是函数自身吗?二、要避免变量被恶意修改,方案是:Func<int,int> f = null;f = n =>{Func&l 阅读全文
posted @ 2013-04-10 23:58 诺贝尔 阅读(2095) 评论(2) 推荐(1) 编辑