Menu
Coddy logo textTech

Öz Yinelemeli (Recursive) Fonksiyonlar

Coddy'nin PHP Journey'sinin Mantık ve Akış bölümünün bir parçası. Ders 8 / 68.

Özyineleme (Recursion), bir fonksiyonun bir problemi çözmek için kendisini çağırdığı bir programlama tekniğidir. Bu, döngü benzeri bir davranış oluşturur; ancak geleneksel döngüler kullanmak yerine, fonksiyon bir çözüme ulaşana kadar değiştirilmiş parametrelerle kendisini tekrar tekrar çağırır.

Her özyinelemeli işlevin doğru çalışması için iki temel bileşeni olmalıdır:

Taban Durumu: Bu, özyinelemeyi (rekürsiyonu) durduran koşuldur. Bu olmadan, fonksiyon kendisini sonsuza kadar çağırır ve programınızın çökmesine neden olur. Taban durumu, fonksiyonun kendisini tekrar çağırmak yerine ne zaman bir sonuç döndürmesi gerektiğini tanımlar.

Özyinelemeli Adım: Bu, fonksiyonun özgün problemin değiştirilmiş bir sürümüyle kendisini çağırdığı ve temel duruma doğru kademeli olarak ilerlediği adımdır.

İşte faktöriyel hesaplayan özyinelemeli bir fonksiyonun basit bir örneği:

<?php
function factorial($n) {
    // Temel durum: 1'in faktöriyeli 1'dir
    if ($n <= 1) {
        return 1;
    }
    
    // Özyinelemeli (recursive) adım: n! = n * (n-1)!
    return $n * factorial($n - 1);
}

echo factorial(5);  // Çıktı: 120
?>

Bu örnekte, factorial(5); factorial(4)'ü çağırır, o factorial(3)'ü çağırır ve bu şekilde factorial(1)'e (temel durum) ulaşana kadar devam eder. Ardından sonuçlar geriye doğru çarpılır: 1 × 2 × 3 × 4 × 5 = 120.

challenge icon

Görev

Kolay

sumDigits adlı, pozitif bir tam sayı alan ve rakamlarının toplamını döndüren özyinelemeli bir işlev oluşturun. İşlev, sayıyı basamak basamak parçalamak için özyinelemeyi kullanmalıdır.

Bir girdi alacaksınız: pozitif bir tam sayı. Girdiyi okuyun, özyinelemeli işlevinizi bu sayıyla çağırın ve rakamlarının toplamını yazdırın.

Girdi biçimi: Pozitif bir tam sayı içeren bir satır

Beklenen çıktı: Sayıdaki tüm rakamların toplamı

Kendin dene

<?php
// Girdiyi oku
$number = intval(fgets(STDIN));

// YAPILACAK: Özyinelemeli sumDigits fonksiyonunuzu burada oluşturun


// Fonksiyonu çağırın ve sonucu yazdırın
echo sumDigits($number);
?>
quiz iconKendini test et

Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.

Mantık ve Akış bölümündeki tüm dersler

Kendi başına pratik yap: Online PHP derleyicisi