Menu
Coddy logo textTech

Özyinelemeye Giriş

Coddy'nin C++ Journey'sinin Mantık & Akış bölümünün bir parçası — ders 45 / 56.

Özyineleme (Recursion), bir fonksiyonun bir problemi çözmek için kendisini çağırdığı bir programlama tekniğidir. Döngüleri kullanmak yerine, özyinelemeli fonksiyonlar, karmaşık problemleri doğrudan çözülebilen basit bir duruma ulaşana kadar daha küçük ve benzer alt problemlere böler.

Her özyinelemeli (recursive) fonksiyonun iki temel bileşeni olmalıdır. Taban durum (base case), özyinelemeyi durduran bir koşuldur; bu koşul olmadan fonksiyon kendini sonsuza kadar çağıracaktır. Özyinelemeli adım (recursive step) ise fonksiyonun, her çağrıda taban duruma daha da yaklaşarak kendisini değiştirilmiş parametrelerle çağırdığı yerdir.

İşte özyinelemeyi (recursion) gösteren basit bir geri sayım örneği:

void countdown(int n) {
    if (n <= 0) {           // Temel durum: n 0'a ulaştığında dur
        std::cout << "Done!" << std::endl;
        return;
    }
    
    std::cout << n << std::endl;
    countdown(n - 1);       // Özyinelemeli adım: n-1 ile çağır
}

countdown(3) fonksiyonunu çağırdığınızda, 3 yazdırır, ardından 2 yazdıran countdown(2) fonksiyonunu çağırır, sonra countdown(1) fonksiyonunu çağırır ve temel duruma ulaşana kadar bu şekilde devam eder. Her fonksiyon çağrısı, bitmeden önce bir sonrakinin tamamlanmasını bekler ve sonunda orijinal çağırana geri dönen bir çağrı zinciri oluşturur.

Kopya kağıdı

Özyineleme (Recursion), bir fonksiyonun bir problemi daha küçük alt problemlere bölerek çözmek için kendisini çağırmasıdır.

Her özyinelemeli fonksiyonun şunlara ihtiyacı vardır:

  • Temel durum (Base case): özyinelemeyi durduran koşul
  • Özyinelemeli adım (Recursive step): fonksiyonun kendisini değiştirilmiş parametrelerle çağırması

Örnek geri sayım fonksiyonu:

void countdown(int n) {
    if (n <= 0) {           // Temel durum
        std::cout << "Done!" << std::endl;
        return;
    }
    
    std::cout << n << std::endl;
    countdown(n - 1);       // Özyinelemeli adım
}

Kendin dene

Bu ders bir kod alıştırması içermiyor.

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 & Akış bölümündeki tüm dersler