Özyinelemeye Giriş
Coddy'nin Dart Journey'sinin Mantık & Akış bölümünün bir parçası — ders 47 / 65.
Özyineleme (Recursion), bir fonksiyonun bir problemi çözmek için kendisini çağırdığı bir programlama tekniğidir. Bunu birbirine bakan iki aynaya bakmak gibi düşünün; her yansıma, yansımalar görülmeyecek kadar küçülene kadar sonsuz bir döngü oluşturarak aynı görüntünün daha küçük bir versiyonunu içerir.
Her özyinelemeli (recursive) fonksiyonun düzgün çalışması için iki temel bileşene ihtiyacı vardır. Taban durum (base case), özyinelemeyi durduran koşuldur; bu, ayna yansımalarının artık önemsenmeyecek kadar küçüldüğü nokta gibidir. Bir taban durum olmadan, fonksiyonunuz kendisini sonsuza kadar çağırır ve sonunda programınızın çökmesine neden olur.
Özyinelemeli adım, fonksiyonun kendisini orijinal problemin değiştirilmiş bir versiyonuyla çağırdığı yerdir. Fonksiyon her seferinde kendisini çağırdığında, problemin daha küçük veya daha basit bir versiyonu üzerinde çalışmalı ve kademeli olarak taban duruma doğru ilerlemelidir.
Bir kağıt yığını içinde anahtarlarınızı aradığınızı hayal edin. En üstteki kağıdı kontrol edebilirsiniz ve eğer anahtarlarınız orada değilse, kalan yığınla (ki bu yığın artık bir kağıt daha küçüktür) aynı şeyi yaparsınız. Anahtarlarınızı bulana kadar veya kontrol edilecek kağıt kalmayana kadar bu işlemi tekrarlamaya devam edersiniz.
Büyük bir problemi daha küçük, özdeş problemlere bölme yaklaşımı, özyinelemeyi (recursion) belirli programlama zorlukları türleri için bu kadar güçlü kılan şeydir.
Kopya kağıdı
Özyineleme (Recursion), bir fonksiyonun bir problemi daha küçük ve özdeş problemlere bölerek çözmek için kendisini çağırdığı bir programlama tekniğidir.
Her özyinelemeli fonksiyonun iki temel bileşene ihtiyacı vardır:
Taban durum (Base case): Sonsuz döngüleri önlemek için özyinelemeyi durduran koşul.
Özyinelemeli adım (Recursive step): Fonksiyonun, orijinal problemin değiştirilmiş bir versiyonuyla kendisini çağırdığı ve kademeli olarak taban duruma doğru ilerlediği kısımdır.
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İleri Düzey Liste İşlemleri
Liste Özellikleri: first & lastListe Durumu: isEmpty & isNotEmptyBir Listeyi Tersine ÇevirmeListeye Ekleme: insertListeden Silme: removeWhereListede Bulma: indexOfBir Listeyi SıralamaBir Listeyi KarıştırmaÖzet - Liste Düzenleyici4İleri Seviye Map İşlemleri
Map Üzerinde GezinmeAnahtar ve Değer KontrolüMap Özellikleri: keys & valuesKoşullu Ekleme: putIfAbsentMap'ten Öge Kaldırmaİç İçe Map'lerÖzet - Envanter Güncelleme7İleri Seviye Fonksiyonlar
Anonim FonksiyonlarFonksiyonları Argüman Olarak AktarmaClosure'ları AnlamakÖzyinelemeye GirişÖzyinelemeli Fonksiyon: Geri SayımÖzyinelemeli Fonksiyon: FaktöriyelÖzet - Liste İşleyici10Son Meydan Okumalar
Meydan Okuma: Not SıralayıcıMeydan Okuma: Sesli Harf SayacıMeydan Okuma: FizzBuzz2Fonksiyonel Liste İşlemleri
'map' ile Dönüştürme'where' ile Filtreleme'.toList()' Kullanımı'any' ile Koşul Kontrolü'every' ile Koşullar'firstWhere' ile BulmaÖzet - Veri Filtreleme5Proje: Alışveriş Sepeti Hesaplayıcı
Proje KurulumuSepete Ürün Ekleme3Kümeler
Küme Nedir?Küme OluşturmaKümelere Eleman Ekleme ve ÇıkarmaKüme İçinde Eleman KontrolüListeyi Kümeye DönüştürmeKüme BirleşimiKüme KesişimiKüme FarkıÖzet - Benzersiz Davetli Listesi