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.