帮助LINQ表达式

mis*_*tor 4 c# linq fibonacci

如何编写一个LINQ表达式(首选方法调用语法),它给出一个位于特定范围内的斐波那契数字列表,比如1到1000?

Mar*_*ell 14

好; 获得更多"FP"答案:

using System;
using System.Collections.Generic;
using System.Linq;
static class Program
{
    static void Main()
    {
        Func<long, long, long, IEnumerable<long>> fib = null;
        fib = (n, m, cap) => n + m > cap ? Enumerable.Empty<long>()
            : Enumerable.Repeat(n + m, 1).Concat(fib(m, n + m, cap));

        var list = fib(0, 1, 1000).ToList();
    }
}
Run Code Online (Sandbox Code Playgroud)

请注意,理论上这可以写成单个lambda,但这很难.

  • 令人印象深刻的LINQ?这对我来说更像是函数式编程101.尽管如此,对于大多数势在必行的C#程序员来说,它一定会令人印象深刻. (5认同)
  • 很高兴C#程序员可以使用LINQ进行函数式编程,即使有些人还没有意识到.当他们的思想准备就绪时,功能性程序员可以接管世界![在这里插入邪恶的咯咯] (3认同)
  • 马克,我发现递归lambda表达式这更清楚的解释,实际上解决了斐波那契数,这就是IMO比你给的链接更加清晰:http://blogs.msdn.com/b/wesdyer/archive/2007/02/ 02 /匿名的递归功能于c.aspx (2认同)