Recursion ve Javascript
13 Aralık 2021Recursion ya da dilimizdeki karşılığıyla özyineleme bir fonksiyonun kendi kendini çağırmasıdır.
Recursive Fonksiyon Gereksinimleri
- Recursive bir fonksiyon oluşturmak için fonksiyonun durmasını sağlayacak en az bir koşula ihtiyacımız var aksi takdirde fonksiyon sürekli çalışacak ve sonunda hata verecektir. Bu koşula base case adının verildiğini görebilirsiniz.
- Fonksiyonun kendisini çağırdığı bölüm.
Neden?
Aslında Javascript gibi modern dillerde zaten for
ve while
looopları kullanarak recursive functionlar ile elde edeceğimiz sonuçları elde edebiliyoruz. Ancak bazı dillerde herhangi bir loop statement imkanı olmadığından recursive kullanmak zorunlu olabiliyor.
Bunun dışında for
loop kullanırken fonksiyonun kaç kez çalışacağını bilmemiz gerekiyor. Ancak recursive function ve while
loop kullandığımızda kodun kaç kez çalışacağını bilmemize gerek yok yalnızca ne zaman duracağını bilmemiz yetiyor.
Nasıl Çalışıyor?
Recursive fonksiyonların nasıl çalıştığını anlamak için fonksiyonları verilen inputu işleyen birer makine olarak düşünelim. Recursive bir makine verilen input istenilen koşulu sağlamazsa kendisiyle aynı özellikteki başka bir makineye inputu veriyor. Bu süreç istenilen koşul elde edilene kadar sürüyor ve elde edildiğinde son makineden ilk makineye kadar sonuçlar iletiliyor.
Bu senaryoyu daha iyi kavrayabilmek için çok sık verilen faktöriyel örneğini inceleyebilirsiniz;
faktoriyel(3) fonksiyonunu çalıştırdığımızda bu şekilde çalışacak ;