Ich begann gerade mit Lambdas und Linq Ausdruck für das Selbstlernen zu spielen. Ich nahm das einfache faktorielle Problem dafür. Mit dem kleinen komplexen Szenario finden Sie die Fakultät für gegebene n Zahlen (ohne rekursive Schleifen zu verwenden).Faktor von n Zahlen mit C# Lambda ..?
Unter dem Code habe ich versucht. Aber das funktioniert nicht.
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());
}
Dies ist die Prozedur i
verwendet- Schleife durch die Zahlen 1 bis n - Enumerable.Range (1, Bereich).
- jede Zahl x auszuwählen und wieder Schleife sie bis zu x-mal (statt Rekursion)
- und wählen die Zahlen Wo (y => (y> 1)) größer als 1 ist und sich vermehren, dass mit (y-1)
ich weiß, ich irgendwo vermasselt. kann mir jemand sagen, was falsch ist und jede andere mögliche Lösung.
EDIT:
Ich werde diesen Thread einige Zeit offen lassen ... da dies meine ersten Schritte in Richtung Lambda ist .. ich alle Antworten sehr nützlich und informativ .. Und sein Gehen Spaß zu haben und großartig zu lernen, die verschiedenen Wege zu sehen, dieses Problem anzugehen.
10 von 10 Punkten für Stil einfach für die Verwendung von "x => x <= 1 1: x * factorial (x-1);" .. . x => x <= 1 :) – veggerby
danke Jon, ich habe diesen Weg schon früher ausprobiert. Aber ich dachte, es wäre cool, dies ohne Rekursion zu tun. Danke für die Links. – RameshVel
+1 für Memoization ... Übrigens gibt es eine interessante Bibliothek namens Elevate, die eine Erweiterungsmethode zum Memoisieren einer Funktion bietet: http://elevate.codeplex.com/sourcecontrol/changeset/view/42940?projectName=elevate#690734 –