Özyinelemeli Fonksiyonlar Bölüm 2
Coddy'nin Python Journey'sinin Logic & Flow bölümünün bir parçası — ders 61 / 78.
Özyinelemeli (recursive) fonksiyonların genellikle iki bölümü vardır:
- Temel Durum: Özyinelemenin ne zaman durması gerektiğini tanımlar.
- Özyinelemeli Adım: Fonksiyonu daha küçük bir girdiyle tekrar çağırır.
Örnek: Özyineleme (recursion) kullanarak faktöriyel hesaplama:
def factorial(n):
if n == 1: # Temel durum
return 1
return n * factorial(n - 1) # Özyinelemeli çağrı
print(factorial(5)) # Çıktı: 120Burada fonksiyon, 1 değerine ulaşana kadar kendisini n - 1 ile çağırmaya devam eder ve bu noktada özyineleme durur.
Örnek: Bir Diziyi Tersine Çevirme:
def recursive_reverse(s):
if len(s) <= 1: # Temel durum: boş veya tek karakterli dizi
return s
else:
return recursive_reverse(s[1:]) + s[0] # Özyinelemeli adım
text = "hello"
result = recursive_reverse(text)
print(result)
# Çıktı: ollehBu örnekte, recursive_reverse fonksiyonu, dize boşalana veya tek bir karaktere sahip olana kadar kendisini dizenin geri kalanıyla (s[1:]) çağırır. Her çağrı, ilk karakteri özyinelemeli çağrının sonucuna ekleyerek dizeyi etkili bir şekilde tersine çevirir.
Görev
KolayPozitif bir n tam sayısını argüman olarak alan ve n. Fibonacci sayısını döndüren fibonacci adında özyinelemeli (recursive) bir fonksiyon yazın. Fibonacci dizisi şu şekilde tanımlanır:
fibonacci(1) = 0fibonacci(2) = 1n > 2içinfibonacci(n) = fibonacci(n-1) + fibonacci(n-2).
Örnek Girdi:
n = 6Örnek Çıktı:
5Kopya kağıdı
Özyinelemeli (rekürsif) fonksiyonların iki temel parçası vardır:
- Taban Durumu (Base Case): Özyinelemenin ne zaman durması gerektiğini tanımlar
- Özyinelemeli Adım (Recursive Step): Fonksiyonu daha küçük bir girdiyle tekrar çağırır
Faktöriyel örneği:
def factorial(n):
if n == 1: # Taban durumu
return 1
return n * factorial(n - 1) # Özyinelemeli çağrı
print(factorial(5)) # Çıktı: 120Metin tersine çevirme örneği:
def recursive_reverse(s):
if len(s) <= 1: # Taban durumu: boş veya tek karakterli dize
return s
else:
return recursive_reverse(s[1:]) + s[0] # Özyinelemeli adım
text = "hello"
result = recursive_reverse(text)
print(result) # Çıktı: ollehKendin dene
def fibonacci(n):
# Kodu buraya yazınBu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.
Logic & Flow bölümündeki tüm dersler
1Değişken Keşfi
SabitlerÇoklu Değişken AtamalarıDeğişken TakasıYer Tutucu DeğişkenlerSayıları YuvarlamaListe Tür Dönüşümü4Rehber Uygulaması
Menüyü GörüntüleKişi Ekle7Kümeler Bölüm 2
Matematiksel İşlemler Bölüm 1Matematiksel İşlemler Bölüm 2Özet - Hazine AvıAlt Kümeler ve Üst KümelerKümeler Üzerinde YinelemeÖzet - Turnuva Takipçisi10Temel List Comprehension Yapıları
SözdizimiBasit Listeler OluşturmaKoşul EklemeVeri Toplulaştırma KullanımıÖzet - Liste EviÖzet - Özgürlük Elementleri13Envanter Yönetim Sistemi
Projeye Genel BakışÖğe Ekle2Sözlükler Bölüm 1
Sözlük Nedir?Sözlük OluşturmaDeğerlere ErişmeSözlükleri DeğiştirmeÖzet - Tarif Yöneticisi5İleri Seviye Karar Yapıları
Ternary OperatörüÜyelik KontrolleriKimlik KontrolleriGirintileme HatalarıÖzet - Tatil Filtresi8Öğrenci Kayıt Yöneticisi
Projeye Genel BakışÖğrenci Ekle11İleri Seviye Fonksiyonlar
Birden Fazla Değer DöndürmeLambda Fonksiyonları Bölüm 1Lambda Fonksiyonları Bölüm 2Tekrar Görevi - Lambda ile SıralamaÖzyinelemeli Fonksiyonlar Bölüm 1Özyinelemeli Fonksiyonlar Bölüm 2Tekrar - İç İçe Listeleri Toplama14Yüksek Mertebeden Fonksiyonlar
Map FonksiyonuFilter FonksiyonuÖzet - E-posta DoğrulayıcıÖzet - Sayı İşleyici3Sözlükler Bölüm 2
Sözlük Metotlarıİç İçe SözlüklerAnahtar KontrolüSözlüklerde DöngülerÖzet - Frekans Sayacı9İleri Düzey Veri Toplulaştırma
Toplam KullanımıMinimum ve Maksimumu BulmaVerileri Verimli SıralamaÖzet - Dictionary Sıralayıcı