我刚开始玩lambdas和Linq表达自学。我为此采取了简单的因子问题。用小复杂的场景找到给定n个数字的因子(不使用递归循环)。使用c#lambda进行n阶乘积的阶乘
下面我试过的代码。但是这不起作用。
public void FindFactorial(int range)
{
var res = Enumerable.Range(1, range).Select(x => Enumerable.Range(0, x).Where(y => (y > 1)).Select(y => y * (y-1)));
foreach (var outt in res)
Console.WriteLine(outt.ToString());
}
这是我用
- 遍历的数字1到n中的程序 - Enumerable.Range(1,范围)。
- 选择每个数x和再次循环它们高达x倍(而不是 递归)
- 和选择号码其中(Y =>(Y> 1))大于1,乘以与 (y-1)
我知道我搞砸了某个地方。有人可以告诉我什么是错误的和任何其他可能的解决方案。
编辑:
我要去让这个线程开启一段时间......因为这是我对λ初始步骤..我发现所有的答案非常有用的信息。而它去看到解决这个问题的不同方式,充满乐趣和了解更多。
10出来的10风格简单地对使用的 “X => X <= 1?1:X *阶乘(X-1);” .. 。x => x <= 1 :) – veggerby 2009-09-15 12:04:44
感谢Jon,我已经尝试过这种方式了。但我认为它很酷这样做没有递归。感谢您的链接。 – RameshVel 2009-09-15 12:06:26
+1 for memoization ...顺便说一句,有一个有趣的名为Elevate的库,它提供了一个用于记忆函数的扩展方法:http://elevate.codeplex.com/sourcecontrol/changeset/view/42940?projectName=elevate#690734 – 2009-09-15 12:15:25