Özyineleme (Recursion) Nedir?
Özyineleme, bir fonksiyonun aynı problemin daha küçük bir versiyonunu çözmek için kendi kendini çağırdığı bir tekniktir. Her özyinelemeli fonksiyonun, çağrıları durduran bir taban durumu (base case) ve ona doğru ilerleyen bir özyinelemeli duruma ihtiyacı vardır.
Özyineleme, bir fonksiyonun bir problemi taban duruma ulaşana kadar daha küçük, aynı yapıdaki alt problemlere bölmek için kendini çağırmasıdır; taban duruma ulaşınca sonuçlar geriye doğru birleştirilir.
- 1↓factorial(4)factorial(3)'ü çağırır, sonucunu bekler
- 2↓factorial(3)factorial(2)'yi çağırır, sonucunu bekler
- 3↓factorial(2)factorial(1)'i çağırır, sonucunu bekler
- 4↓factorial(1)factorial(0)'ı çağırır, sonucunu bekler
- 5↓factorial(0) — taban durumdoğrudan 1 döndürür, başka çağrı yok
- 6Geri sarma1×1=1, 2×1=2, 3×2=6, 4×6=24 → nihai sonuç 24
Adım adım çözümlü örnekler
factorial(5)'i özyinelemeli olarak hesapla.
factorial(5) = 5 × factorial(4) factorial(4) = 4 × factorial(3) factorial(3) = 3 × factorial(2) factorial(2) = 2 × factorial(1) factorial(1) = 1 × factorial(0) = 1 × 1 = 1 Geri sarma: 2×1=2, 3×2=6, 4×6=24, 5×24=120 factorial(5) = 120
[3, 5, 2] listesinin toplamını özyinelemeyle bul.
sum([3,5,2]) = 3 + sum([5,2]) sum([5,2]) = 5 + sum([2]) sum([2]) = 2 + sum([]) = 2 + 0 = 2 Geri sarma: 5+2=7, 3+7=10 Sonuç: 10
F(n) = F(n-1) + F(n-2), F(0)=0, F(1)=1 tanımıyla Fibonacci(5)'i bul.
F(2) = F(1)+F(0) = 1+0 = 1 F(3) = F(2)+F(1) = 1+1 = 2 F(4) = F(3)+F(2) = 2+1 = 3 F(5) = F(4)+F(3) = 3+2 = 5 Sonuç: F(5) = 5
Bilgi kartları
Mini test
S1.Özyinelemeli bir fonksiyondaki taban durum nedir?
S2.Özyinelemeli bir fonksiyonun taban durumu yoksa ne olur?
S3.factorial(4) = 4 × factorial(3) ifadesinde factorial(3) neye denir?
S4.F(n) = F(n-1) + F(n-2), F(0)=0, F(1)=1 ise F(4) kaçtır?
“Özyineleme (Recursion) Nedir?” için tüm kartlar, çözümlü adımlar ve AI hoca desteği Notek'te — sınavdan önce elle çalış.
Sık yapılan hatalar
Taban durum yazmayı unutmak. — Doğrusu: Her zaman önce taban durumu tanımla — özyinelemeyi sonsuza kadar çalışmaktan gerçekten alıkoyan odur.
Özyinelemeli durumun taban duruma doğru ilerlemesi gerekmediğini sanmak. — Doğrusu: Her özyinelemeli çağrı problemi küçültmelidir (ör. n-1) ki sonunda taban duruma ulaşılsın.
Özyinelemenin her zaman döngüden daha hızlı olduğunu düşünmek. — Doğrusu: Özyineleme genellikle daha fazla bellek kullanır (çağrı yığını) ve eşdeğer yinelemeli döngüden daha yavaş olabilir.
Özyinelemeli çağrıların 'paralel' gerçekleştiğini varsaymak. — Doğrusu: Özyinelemeli çağrılar sıralı gerçekleşir — her çağrı kendi özyinelemeli çağrısı dönene kadar bekler (duraklar).
Sıkça sorulan sorular
Özyineleme (recursion) nedir?
Özyineleme, bir fonksiyonun taban duruma ulaşana kadar aynı problemin daha küçük bir versiyonuyla kendini çağırmasıdır.
Özyineleme formülü nedir?
Tek bir formül yoktur, ama kalıp her zaman şudur: taban durum (doğrudan cevap) + özyinelemeli durum (kendini daha küçük girdiyle çağırma), ör. n! = n × (n−1)!, 0! = 1.
Özyineleme örnekleri nelerdir?
Faktöriyel, Fibonacci sayıları, bir listenin toplamını alma, ağaç dolaşımı ve özyinelemeli binary search algoritması.
Özyinelemeli bir fonksiyon elle nasıl hesaplanır?
Her çağrı taban duruma ulaşana kadar açılır, doğrudan değeri bulunur, sonra her seviyede sonuçlar çarpılıp/toplanarak geriye doğru 'sarılır'.




