Python Tips: Calcular Fatorial Usando lambda
Hoje vou passar uma dica muita interessente, para fazer uma função recursiva usando lambda em python, como ja foi postado pelo Gabriel(Inclusive ele me ajudou nesse post) à alguns meses atrás, lambda(não lambida) da o programador a possibilidade de fazer uma função em apenas uma linha. Como exemplo vou usar a manjada função recursiva para calculo do fatorial.
[python]
fatorial = lambda x: ((x maior 1) and x*fatorial(x-1) or 1)
[/python]
Viu como é simples???? eu poderia mostra como ficaria usando a função normal, mas eu teria que escrever muito código e eu to com preguiça de fazer isso agora, vale a pena notar também o if ternário.
ps.:o parser do wordpress bugou o sinal de >(maior) dentro do código.
UPDATE(20/03/2008)!!!!: Pessoal MIL DESCULPAS eu acabei me enganando e trocando o sinal *(que seria o correto) por +, Agradeço ao @Waa pelo alerta!!!
3 Comentário para “Python Tips: Calcular Fatorial Usando lambda”
Deixe um comentário |


O Python 2.5 já tem o operador if ternário. A função ficaria assim:
fatorial = lambda x: x + fatorial(x-1) if x > 1 else 1
A função está incorreta ou é eu que estou comendo bola?
>>> fatorial = lambda x: ((x > 1) and x+fatorial(x-1) or 1)
>>> fatorial(2)
3
>>> fatorial(3)
6
>>> fatorial(4)
10
>>> fatorial(5)
15
>>> fatorial(6)
21
Onde onde o correto é:
2! = 2 . 1 = 2
3! = 3 . 2 . 1 = 6
4! = 4 . 3 . 2 . 1 = 24
5! = 5 . 4 . 3 . 2 . 1 = 120
6! = 6 . 5 . 4 . 3 . 2 . 1 = 720
@Waa ja corrigi o post agora deu tudo certo!!!!
@LKRaider muito obrigado pela contribuição!!!!