yineleme ne demek?

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?

  1. Fonksiyon ilk kez çağrılır.
  2. Fonksiyon, temel duruma ulaşıp ulaşmadığını kontrol eder. Eğer temel duruma ulaştıysa, sonucu döndürür.
  3. Eğer temel duruma ulaşmadıysa, fonksiyon kendisini daha küçük bir girdiyle tekrar çağırır (yinelemeli adım).
  4. Bu süreç, temel duruma ulaşılana kadar devam eder.
  5. 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: