Je viens de commencer à jouer avec lambdas et l'expression Linq pour l'auto-apprentissage. J'ai pris le problème factoriel simple pour cela. avec le petit scénario complexe où trouver la factorielle pour n nombres donnés (sans utiliser de boucles récursives).factorielle de n nombres en utilisant C# lambda ..?
Ci-dessous le code que j'ai essayé. Mais ça ne fonctionne pas.
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());
}
cette procédure est le i utilisé
-
boucle
- à travers les numéros 1 à n - Enumerable.Range (1, rang).
- sélectionner chaque nombre x et leur boucle à nouveau jusqu'à x fois (au lieu de de récursion)
- et sélectionner les numéros Où (y => (y> 1)) supérieur à 1 et multiplier ce avec (y-1)
Je sais que j'ai foiré quelque part. Quelqu'un peut-il me dire ce qui est mal et toute autre solution possible.
EDIT:
je vais laisser ce fil ouvert pendant un certain temps ... car ce sont mes premiers pas vers lambda .. je l'ai trouvé toutes les réponses très utile et instructif .. Et sa va être amusant et apprendre en voyant les différentes façons d'aborder ce problème.
10 sur 10 pour le style simple pour l'utilisation de "x => x <= 1 1: x * factoriel (x-1);" .. x => x <= 1 :) – veggerby
merci Jon, j'ai essayé de cette façon plus tôt. Mais j'ai pensé que c'était cool de le faire sans récursion. merci pour les liens. – RameshVel
+1 pour mémoization ... BTW, il y a une bibliothèque intéressante appelée Elevate qui fournit une méthode d'extension pour mémoriser une fonction: http://elevate.codeplex.com/sourcecontrol/changeset/view/42940?projectName=elevate#690734 –