私はちょうどlambdaとLinq式で自己学習を始めました。私はこれに対して単純な階乗問題を取りました。少し複雑なシナリオでは、与えられたn個の数値の階乗を見つけることができます(再帰的ループを使用してwitout)。私が試したコードの下nの階乗はC#λを使用しています..?
。しかし、これは動作していません。 Enumerable.Range(1、レンジ) -
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()); }
これは、iがNに番号1を介して
- ループを使用する手順です。
- 各数xを選択し、再度X回(代わりに 再帰)
- の点で最大ループそれらをと数字を選択する場合(Y =>(Y> 1)) 1より大きく、乗算その と(y-1)
私はどこかでうんざりしています。誰かが私に何が間違っているか、他の可能な解決策を教えてくれる?
はEDIT:
私はしばらくの間、このスレッドがオープンできるようにするつもりです...これは、ラムダに向けた私の最初のステップであるので、..私は..すべての答えは非常に便利で有益発見し、その行きますこの問題に近づく別の方法を見て楽しいと偉大な学習であること。
10単に使用するためのスタイルのための10のうちの "x => X <= 1?1:X *階乗(X-1);" .. 。x => x <= 1 :) – veggerby
ジョンさん、ありがとうございました。しかし、私は再帰なしでこれをやってクールだと思った。リンクをありがとう。 – RameshVel
+1のメモ... BTW、関数をメモするための拡張メソッドを提供する興味深いライブラリElevateがあります:http://elevate.codeplex.com/sourcecontrol/changeset/view/42940?projectName=elevate#690734 –