Özyineleme, bir fonksiyonun kendi kendini çağırması prensibine dayanan bir programlama tekniğidir.
Özyinelemenin Temel Bileşenleri
Her özyinelemeli fonksiyonun iki temel bileşeni olmalıdır:
1. Temel Durum (Base Case)
Özyinelemenin durduğu, fonksiyonun artık kendi kendini çağırmadığı durumdur. Bu durum, sonsuz döngüye girmeyi engeller.
2. Özyinelemeli Durum (Recursive Case)
Fonksiyonun kendi kendini, genellikle daha küçük bir girdiyle, tekrar çağırdığı durumdur.
Örnek: Faktöriyel Hesaplama
Faktöriyel matematiksel olarak özyinelemeli tanımlanabilir:
- 0! = 1 (Temel Durum)
- n! = n * (n-1)! (Özyinelemeli Durum)
FONKSİYON Faktoriyel(n)
EĞER (n == 0) O ZAMAN
DÖNDÜR 1 // Temel Durum
DEĞİLSE
DÖNDÜR n * Faktoriyel(n - 1) // Özyinelemeli Durum
SON
SON_FONKSİYON
Özyineleme Nasıl Çalışır?
Faktoriyel(3) çağrısı için:
- Faktoriyel(3) → 3 * Faktoriyel(2)
- Faktoriyel(2) → 2 * Faktoriyel(1)
- Faktoriyel(1) → 1 * Faktoriyel(0)
- Faktoriyel(0) → 1 (Temel Durum)
- Geri dönüş: 1 * 1 * 2 * 3 = 6
Özyineleme vs Döngüler
| Özellik | Özyineleme | Döngü |
|---|---|---|
| Okunabilirlik | Daha doğal (bazı problemler için) | Daha basit |
| Bellek Kullanımı | Daha fazla (yığın) | Daha az |
| Performans | Daha yavaş olabilir | Genellikle daha hızlı |
Özyineleme Ne Zaman Kullanılmalı?
- Problemin özyinelemeli bir yapısı varsa
- Ağaç ve graf yapılarında
- Böl ve yönet algoritmalarında
- Matematiksel problemlerde
Dikkat Edilmesi Gerekenler
- Temel durum mutlaka olmalı
- Yığın taşması riski
- Performans değerlendirmesi