Özyineleme adımı
- Algoritmalar kursu
- Başlangıç
- Ders 39/80
- 4 dk
Problemi daha küçük aynı probleme bölerek çözmeyi öğrenirsin.
Recursion vs döngü
Birçok recursion problemi bir döngüyle de çözülebilir. Recursion daha okunaklı olabilir ama her çağrı yığın alanı kullanır.
Döngü genellikle daha az bellek kullanır. Recursion ise problemi bölerek düşünmeyi kolaylaştırır.
Çağrı yığını
Her recursive çağrı yığına bir çerçeve ekler. Taban duruma ulaşılınca çağrılar geri açılır ve her çerçeve sonucunu döndürür.
Çok derin recursion yığın taşmasına neden olabilir. Bu yüzden çok büyük girdiler için döngü tercih edilir.
Uygulama Dizi uzunluğu (recursive)
length_recursive(arr) yaz. Boş ise 0, değilse 1 + length_recursive(arr[1:]) döndür. print(length_recursive([4, 5, 6, 7])) ile 4 yazdır.
Başlangıç kodu
def length_recursive(arr):
# Uzunluğu hesaplaÖrnek çözüm
def length_recursive(arr):
# Uzunluğu hesapla
if len(arr) == 0:
return 0
return 1 + length_recursive(arr[1:])
print(length_recursive([4, 5, 6, 7]))Beklenen çıktı
4
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 Özyineleme adımı: kavramları eşleştir
| Kavram | Anlamı |
|---|---|
Recursion |
Yığın kullanır |
Döngü |
Daha az bellek |
Yığın taşması |
Çok derin |
Taban durum |
Durdurur |
2 Recursion ne kullanır ki döngü kullanmaz?
- Yığın alanı Doğru cevap
- Döngü
- Hash tablosu
- Ağaç
Açıklama: Recursion yığın alanı kullanır.
3 Yığın taşması
Çok derin recursion ____ neden olur.
Çok derin recursion yığın taşması neden olur.
Açıklama: yığın taşması doğru.