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 (recursive) fonksiyonun doğru çalışması için iki temel bileşene sahip olması gerekir:

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: Burası, fonksiyonun orijinal problemin değiştirilmiş bir versiyonuyla kendisini çağırdığı ve kademeli olarak temel duruma (base case) doğru ilerlediği yerdir.

İş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.

quiz iconKendini test et

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

quiz iconKendini test et

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

quiz iconKendini test et

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

challenge icon

Görev

Kolay

Pozitif bir tam sayı alan ve bu sayının rakamlarının toplamını döndüren sumDigits adında özyinelemeli (recursive) bir fonksiyon oluşturun. Fonksiyon, sayıyı rakam rakam parçalamak için özyineleme kullanmalıdır.

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

Girdi formatı: Pozitif bir tam sayı içeren tek bir satır

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

Kopya kağıdı

Özyineleme (Recursion), bir fonksiyonun bir problemi çözmek için kendisini çağırdığı bir programlama tekniğidir. Her özyinelemeli fonksiyonun iki bileşene ihtiyacı vardır:

Temel Durum (Base Case): Sonsuz döngüleri önlemek için özyinelemeyi durduran koşul.

Özyinelemeli Adım (Recursive Step): Fonksiyonun, temel duruma doğru ilerleyerek kendisini değiştirilmiş parametrelerle çağırdığı yerdir.

Özyinelemeli bir faktöriyel fonksiyonu örneği:

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

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

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