Ö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 işlevin iki temel bileşeni olmalıdır. Temel durum, özyinelemeyi durduran bir koşuldur; bu koşul olmadan işlev kendisini sonsuza dek çağırırdı. Özyinelemeli adım, işlevin kendisini değiştirilmiş parametrelerle çağırdığı ve her çağrıda temel duruma biraz daha yaklaştığı bölümdür.
İş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.
Kendin dene
Bu ders bir kod alıştırması içermiyor.
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
1İşaretçiler ve Bellek
İşaretçi Nedir?Adres OperatörüDereference OperatörüNull İşaretçilerİşaretçiler ve Diziler'new' ile Dinamik Bellek'delete' ile Belleği Serbest BırakmaÖzet - İşaretçi Pratiği4Map'ler (Anahtar-Değer Çiftleri)
std::map'e GirişBir Map OluşturmaDeğerlere Erişme ve DeğiştirmeAnahtar KontrolüÇiftleri KaldırmaMap Üzerinde YinelemeÖzet - Kelime Frekansı7İleri Seviye Fonksiyonlar
Referans ile GeçmeLambda İfadelerine GirişParametreli LambdalarDönüş Değeri Olan LambdalarÖzyinelemeye GirişÖzyinelemeli FaktöriyelLambda ile Sıralama2Vektörler (Dinamik Diziler)
std::vector'a GirişBir Vektör OluşturmaEleman EklemeElemanlara ErişmeVektör BoyutuFor Döngüsü ile YinelemeAralık Tabanlı For DöngüsüEleman SilmeÖzet - Vektör İşlemleri3Proje: Görev Listesi Aracı
Projeye Genel BakışGörev EklemeKendi başına pratik yap: Online C++ derleyicisi