Właśnie zacząłem grać z wyrażeniem lambdas i Linq dla samokształcenia. Zrobiłem to za pomocą prostego problemu z czynnikiem. z małym skomplikowanym scenariuszem, w którym znajduje się silnia dla podanych liczb n (bez użycia pętli rekursywnych).silnia n liczb przy użyciu C# lambda ..?
Poniżej kodu próbowałem. Ale to nie działa.
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());
}
to Procedura stosowane
- Przelotowe liczb 1 do N - Enumerable.Range (1, zakres).
- wybrać każdą liczbę X i ponownie pętli JE zapisu do czasu x (zamiast rekurencji)
- i wybierać numery przypadku (r => (r> 1)) większy niż 1 i pomnożyć z (y-1)
Wiem, że gdzieś zawiedli. czy ktoś może mi powiedzieć, co jest nie tak i jakie jest inne możliwe rozwiązanie.
EDIT:
mam zamiar dać ten wątek otwarty przez jakiś czas ... ponieważ jest to moje pierwsze kroki w kierunku lambda .. znalazłem wszystkie odpowiedzi bardzo przydatne i pouczające .. I jego dzieje być zabawą i wspaniałą nauką, widząc różne sposoby podejścia do tego problemu.
10 z 10 dla stylu po prostu za korzystanie z "x => X <= 1 1: x * silnia (x-1);" .. x => x <= 1 :) – veggerby
dzięki Jon, próbowałem w ten sposób wcześniej. Ale myślałem, że to fajne, robiąc to bez rekursji. dzięki za linki. – RameshVel
+1 do zapamiętania ... BTW, istnieje interesująca biblioteka o nazwie Elevate, która zapewnia metodę rozszerzającą do zapamiętania funkcji: http://elevate.codeplex.com/sourcecontrol/changeset/view/42940?projectName=elevate#690734 –