Lambda表达式来构造一个递归函数”的难点是因为“我们正在构造的东西是没有名字的”,因此“我们无法调用自身”。
那么,如果我们换种写法,把我们正在调用的匿名函数作为参数传给自己,那么就可以在匿名函数的方法体中,通过调用参数来调用自身了。
下面举例说明用Lambda实现斐波那契
第一种方法:
声明一个delegate
/// <summary>
/// 在这里声明SelfApplicable是一个delegate,他有2个参数,第一个参数是他自己,第二个参数是
/// 类型T,返回类型是TResult
/// </summary>
/// <typeparam name="T"></typeparam>
/// <typeparam name="TResult"></typeparam>
/// <param name="self"></param>
/// <param name="arg"></param>
/// <returns></returns>
delegate TResult SelfApplicable<T, TResult>(SelfApplicable<T, TResult> self, T arg);
定义斐波那契的Lambda实现
SelfApplic