2.2 Rekürsiyon (Recursion)
Rekürsiyon, bir fonksiyonun kendisini çağırdığı programlama tekniğidir. Bu teknik, belirli problemleri daha basit alt problemlere dönüştürerek çözer. C++'ta rekürsiyon, belirli bir duruma ulaşıldığında durması gereken bir fonksiyonun tasarımı ile gerçekleştirilir.
Rekürsiyonun Temel Unsurları
Temel Durum (Base Case): Rekürsif fonksiyonun hangi koşul altında duracağını belirler. Temel durum olmadan, fonksiyon sonsuz döngüye girebilir.
Rekürsif Durum (Recursive Case): Fonksiyonun kendisini çağırdığı ve problemi daha küçük bir alt probleme dönüştürdüğü durumdur.
Örnek: Faktöriyel Hesaplama
Faktöriyel, n sayısının pozitif tam sayılar olarak çarpımını temsil eder ve matematiksel olarak şu şekilde tanımlanır:
0! = 1
n! = n * (n-1)! (n > 0 için)
Rekürsif Faktöriyel Fonksiyonu:
Çalışma Şekli:
Kullanıcı bir pozitif tam sayı girer.
factorial
fonksiyonu, verilen sayıyı kontrol eder:Eğer sayı 0 veya 1 ise, 1 döner (temel durum).
Aksi halde, sayıyı kendisinden bir önceki sayının faktöriyeli ile çarparak döner (rekürsif durum).
Bu süreç,
n
değeri 1'e ulaşana kadar devam eder.
Rekürsiyonun Avantajları ve Dezavantajları
Avantajları:
Kodun daha temiz ve anlaşılır olmasını sağlar.
Problemi küçük parçalara bölerek çözüm bulmayı kolaylaştırır.
Dezavantajları:
Her rekürsif çağrı, bir çağrı yığını (call stack) kullanır, bu da bellekte aşırı kullanım ve yığın taşması (stack overflow) riskine yol açabilir.
Bazı durumlarda, iteratif çözümler daha verimli olabilir.
Last updated