Una espressione lambda può essere ricorsiva. Quindi è possibile invocare la stessa funzione, assegnando l’espressione lambda ad una variabile, e naturalmente assicurandosi che ci sia sempre una condizione di uscita, per evitare che la ricorsione sia infinita.
Ecco un esempio che calcola il classico fattoriale di un numero.
Il fattoriale di un numero n è il prodotto dei numeri positivi minori o uguali a n. Per definizione, se n è = 0 il fattoriale di n è 1.
Per esempio il fattoriale di 5 è uguale a 54321 = 120.
Ed ecco l’implementazione mediante una espressione lambda.
Func fattoriale = null; fattoriale = (n) => n==0 ? 1: n*fattoriale(n - 1); int result=fattoriale(5); Console.WriteLine(result);
L’espressione lambda è assegnata alla variabile fattoriale, ed al suo interno invoca se stessa.