Acabo de empezar a jugar con lambdas y expresión de Linq para autoaprendizaje. Tomé el problema factorial simple para esto. con el pequeño escenario complejo donde se encuentra el factorial para n números dados (sin usar bucles recursivos).factorial de n números usando C# lambda ...?
Debajo del código probé. Pero esto no está funcionando.
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());
}
Este es el procedimiento i utilizado
- bucle a través de los números 1 a n - Enumerable.Range (1, rango).
- seleccionar cada número x y de nuevo bucle de ellos hasta x veces (en lugar de recursión)
- y seleccionar los números Dónde (y => (y> 1)) mayor que 1 y que se multiplican con (y-1)
Sé que cometí un error en alguna parte. alguien puede decirme qué está mal y cualquier otra solución posible.
EDIT:
voy a dejar que este hilo abierto por algún tiempo ... ya que este es mis pasos iniciales hacia lambda .. he encontrado todas las respuestas muy útil e informativo .. Y su ir ser divertido y excelente para aprender a ver las diferentes maneras de abordar este problema.
10 de los 10 por el estilo, simplemente por el uso de "x => x <= 1 1:? X * factorial (x-1);" .. . x => x <= 1 :) – veggerby
gracias Jon, lo he intentado de esta manera antes. Pero pensé que es genial hacer esto sin recurrencia. gracias por los enlaces. – RameshVel
+1 para la memorización ... Por cierto, hay una interesante biblioteca llamada Elevate que proporciona un método de extensión para memorizar una función: http://elevate.codeplex.com/sourcecontrol/changeset/view/42940?projectName=elevate#690734 –