PHP'de Recursive Closure: Anonim Özyinelemeli Fonksiyon

  • Konbuyu başlatan Konbuyu başlatan sysuser
  • Başlangıç tarihi Başlangıç tarihi
  • Cevaplar Cevaplar 0
  • Görüntüleme Görüntüleme 14

sysuser

PREMİUM
Katılım
9 Kas 2025
Mesajlar
174
Tepki puanı
4
Cinsiyet
Kadın

PHP'de Recursive Closure: Anonim Özyinelemeli Fonksiyon​


Anonim bir fonksiyonun kendini çağırması için referansını kullanabilmesi gerekir. PHP'de bu kullanım biraz özel sözdizimi gerektirir.

Referans ile Çözüm​

PHP:
$factorial = null;
$factorial = function(int $n) use (&$factorial): int {
    if ($n <= 1) return 1;
    return $n * $factorial($n - 1);
};

echo $factorial(5); // 120

use (&$factorial) ile değişken referans olarak yakalanır; closure tanımlanmadan önce null başlatılması gerekir.

Y-Combinator ile Referanssız Çözüm​

PHP:
$Y = fn($f) => $f($f);
$fac = $Y(fn($self) => fn($n) => $n <= 1 ? 1 : $n * $self($self)($n-1));
echo $fac(5); // 120

Ağaç gezmek, iç içe dizileri düzleştirmek veya dinamik yinelemeli algoritmalar için closure tabanlı yaklaşım fonksiyonel programlama tarzını destekler.
 
Geri
Üst