CodeBlanks Logo Icon CodeBlanks

Recursive yapı

Divide and conquer'ın recursive doğasını öğrenirsin.

Recursive yapı

Böl ve yönet, recursion üzerine kuruludur. Her alt problem aynı fonksiyonla çözülür.

Taban durum, alt problem doğrudan çözülecek kadar küçük olduğunda durur; bu sharttır.

Recursion, her seviyede problemi küçültür; böylece karmaşık yapılar basit hale gelir.

Taban durum

Taban durum genelde tek elemanlı ya da boş dizidir. Bu durumda iş doğrudan yapılır, bölme olmaz.

Taban olmazsa recursion sonsuz döngüye girer; stack taşar ve program çöker.

Taban durum, recursive çözümün temel taşıdır; doğru tanımlanması şarttır.

Uygulama Böl en büyük

dc_max(arr) yaz. Diziyi ikiye böl, her yarının en büyük elemanını recursive bul, daha büyük olanı döndür. print(dc_max([3, 1, 4, 1, 5])) ile 5 yazdır.

Başlangıç kodu

solution.py
def dc_max(arr):
    # Böl ve en büyük bul

Örnek çözüm

solution.py
def dc_max(arr):
    # Böl ve en büyük bul
    if len(arr) == 1:
        return arr[0]
    mid = len(arr) // 2
    left = dc_max(arr[:mid])
    right = dc_max(arr[mid:])
    return left if left > right else right
print(dc_max([3, 1, 4, 1, 5]))

Beklenen çıktı

5

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 Taban koşulu

Soru
if len(arr) <= ____:
Cevap
if len(arr) <= 1:

Açıklama: 1 doğru.

2 Recursive yapı: kavramları eşleştir

Kavram Anlamı
base case Durdurur
recursion Böler
subproblem Alt problem
combine Birleştir

3 Böl ve yönette taban durumun görevi nedir?

  • Bellek azaltmak
  • Hız artırmak
  • Recursionu durdurmak Doğru cevap
  • Sıralamak

Açıklama: Recursionu durdurmak.

Orta seviye bölümündeki tüm dersler