Python Tips: Calcular Fatorial Usando lambda

Postado por Ricardo Perez em 29/02/2008

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”

  1. LKRaider disse em 29/02/2008 as 22:38

    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

  2. Waa disse em 29/02/2008 as 13:35

    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

  3. Ricardo Perez disse em 29/02/2008 as 11:27

    @Waa ja corrigi o post agora deu tudo certo!!!!
    @LKRaider muito obrigado pela contribuição!!!!

Trackback URI | RSS dos comentários

Deixe um comentário

Av. Conselheiro Nébias, 368A, Cj. 413
Vila Mathias - Santos - SP
Telefone: (13) 3345-4580

© 2008 - 2009 Stiod. Todos os direitos reservados.