SORU
26 Ocak 2009, PAZARTESİ


Lambda fonksiyonu Python özyinelemeli olarak arama yapabilirim?

Normal bir işlev tanımını kendisi için bir çağrı, hiçbir sorun içerebilir. Lambda fonksiyonu geri başvurmak için adı yok bunun en basit sebebi, lambda işlevi ile ama nasıl olduğunu çözemedim. Bir yol var mı? Nasıl?

CEVAP
26 Ocak 2009, PAZARTESİ


Bunu yapmak için aklıma gelen tek yol bu işlev bir ad vererek miktarları:

fact = lambda x: 1 if x == 0 else x * fact(x-1)

veya alternatif olarak, python önceki sürümleri için:

fact = lambda x: x == 0 and 1 or x * fact(x-1)

Güncellemediğer cevaplara göre bu fikirleri kullanarak, tek isimsiz bir lambda: faktöryel fonksiyonu kama başardı

>>> map(lambda n: (lambda f, *a: f(f, *a))(lambda rec, n: 1 if n == 0 else n*rec(rec, n-1), n), range(10))
[1, 1, 2, 6, 24, 120, 720, 5040, 40320, 362880]

Mümkün, ama gerçekten tavsiye edilmez.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Goran Dimov

    Goran Dimov

    1 HAZİRAN 2014
  • ImBluecams

    ImBluecams

    25 Kasım 2012
  • taliajoy18

    taliajoy18

    12 Temmuz 2011