我剛開始玩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