Recursive yapı
- Algoritmalar kursu
- Orta seviye
- Ders 66/80
- 4 dk
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
def dc_max(arr):
# Böl ve en büyük bulÖrnek çözüm
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
if len(arr) <= ____:
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.