Recursion (Özyineleme): Kendini Çağıran Fonksiyonların Mantığı
Bir problemi çözmeye çalışırken bazen en temiz yol, problemi kendisinin daha küçük bir versiyonuna indirgemektir. İşte recursion tam olarak bunu yapar: bir fonksiyon, çözümün bir parçası olarak kendini çağırır. İlk bakışta kafa karıştırıcı gelir ("Fonksiyon kendini çağırırsa sonsuza kadar çalışmaz mı?"), ama doğru kurulduğunda recursion hem zarif hem de okunabilir kod üretir.
Bu yazıda recursion'ın ne olduğunu, nasıl çalıştığını ve ne zaman kullanılması gerektiğini somut örneklerle inceleyeceğiz.
Recursion Nedir?
Recursion, bir fonksiyonun kendi tanımında kendini tekrar çağırmasıdır. Mantığı şuna dayanır: büyük bir problemi, aynı problemin daha küçük bir örneğine bölersin. Bu küçük örneği çözersin, sonra çözümleri birleştirip büyük problemin cevabını elde edersin.
Her sağlıklı recursion'ın iki temel parçası vardır:
Base case (taban durumu): Recursion'ın duracağı nokta. En küçük, doğrudan cevabını bildiğimiz durum. Base case olmadan fonksiyon kendini sonsuza kadar çağırır ve programın belleği taşar (StackOverflowError).
Recursive case (özyinelemeli durum): Problemi küçülterek fonksiyonun kendini tekrar çağırdığı kısım. Buradaki kritik şart: her çağrı problemi base case'e yaklaştırmalıdır.
Bu iki parçayı bir merdiven gibi düşün. Recursive case seni her adımda bir basamak aşağı indirir, base case ise zemindir. Zemin olmazsa düşmeye devam edersin.
Klasik Örnek: Faktöriyel
Faktöriyel, recursion'ı anlatmak için en sık kullanılan örnektir çünkü matematiksel tanımı zaten özyinelemelidir:
0! = 1
n! = n × (n - 1)!
Bu yazıyı paylaş —
Paylaşım yakında
Tartışma (0)
Henüz yorum yok — sohbeti ilk başlatan sen ol.