Yineleme (Recursion), bir fonksiyonun kendi içinde tekrar çağırmasıdır. Bu yöntem, bir problemi daha küçük ve benzer alt problemlere bölerek çözmeyi amaçlar.
Temel Kavramlar:
-
Temel Durum (Base Case): Yinelemeli fonksiyonun, kendi kendini çağırmayı durdurduğu ve sonucu doğrudan döndürdüğü durumdur. Temel durum olmadan fonksiyon sonsuz döngüye girer.
-
Yinelemeli Adım (Recursive Step): Fonksiyonun kendisini daha küçük bir girdiyle tekrar çağırdığı adımdır. Bu adımda problem, daha basit bir versiyonuna indirgenir.
Nasıl Çalışır?
- Fonksiyon ilk kez çağrılır.
- Fonksiyon, temel duruma ulaşıp ulaşmadığını kontrol eder. Eğer temel duruma ulaştıysa, sonucu döndürür.
- Eğer temel duruma ulaşmadıysa, fonksiyon kendisini daha küçük bir girdiyle tekrar çağırır (yinelemeli adım).
- Bu süreç, temel duruma ulaşılana kadar devam eder.
- Temel duruma ulaşıldığında, sonuçlar yukarı doğru zincirleme şekilde birleştirilerek nihai sonuç elde edilir.
Avantajları:
- Bazı problemleri daha doğal ve okunabilir bir şekilde çözmeyi sağlar.
- Karmaşık algoritmaların daha kısa ve öz bir şekilde ifade edilmesini mümkün kılar.
Dezavantajları:
- Yanlış kullanıldığında sonsuz döngüye yol açabilir.
- Fonksiyon çağrıları nedeniyle performans sorunlarına neden olabilir (her çağrı yığında (stack) yer kaplar).
- Hata ayıklaması (debugging) zor olabilir.
Örnek:
def faktoriyel(n):
# Temel durum: n = 0 olduğunda 1 döndür
if n == 0:
return 1
# Yinelemeli adım: n * faktoriyel(n-1)
else:
return n * faktoriyel(n-1)
print(faktoriyel(5)) # Çıktı: 120
Önemli Notlar:
- Yinelemenin verimli kullanılması, problemin yapısına ve kullanılan programlama diline bağlıdır.
- Bazı durumlarda yineleme yerine döngüler (iterasyon) kullanmak daha iyi bir seçenek olabilir.
- Yinelemeli fonksiyonların temel durumunu doğru tanımlamak çok önemlidir.
İlgili kavramlar: