Özyineli(Recursive) Fonksiyon Nedir?

Öykü Kaya
Kodcular
Published in
2 min readApr 3, 2022

— Merhaba bu yazımda, benim ilk başta anlamakta biraz zorlandığım rekürsif fonksiyonlardan ana hatlarıyla bahsedeceğim.

____İlk olarak rekürsif fonksiyon nedir ona bakalım.
Rekürsif fonksiyon, bir problemi adım adım küçük parçalara ayırarak,temel işleme ulaşıncaya kadar kendi kendini çağıran bir fonksiyon şeklidir.
Bu sıralı çağrılardan sonra temel adıma ulaşınca temel adımdaki değeri geriye doğru sararak en üst basamağa taşır ve böylece sonuç bulunur.

____Aslında özyineleme,döngüler gibi çalışır ve döngülerinde belli bir sınır olduğundan özyinelemede de bir sınır olmalıdır bu sınır temel adım (taban) olmalıdır. Sınır olmazsa işlem sonsuz kez tekrarlanır ve bu durum sistemi çökertebilir.

●Rekürsif fonksiyon içinde iki bölüm bulundurur.

Tekrarlanan durum (Recursive Case):
Bu bölümde tekrar tekrar çağrı yapılır ve bir değer döndürülür. Burada yazılan adımda fonksiyon bir alt basamağı çağırıcak şekilde olmalıdır.

Temel durum (Base Case) :
Bu bölümde ise taban değer oluşturulur ,bu sonlandırma noktasına ulaştıktan sonra artık fonksiyon çağrımı durdurulur ve işlemler hesaplanıp değerlendirilir.

____Rekürsif çağrı çalışma zamanında programa ekstradan yük getiren bir yapıdadır çünkü bir fonksiyon kendi kendini çağırdığında her çağırmada yığında (stack) bir işlem gerçekleşir ve bir bellek konumu oluşur.
Bu yüzden özyineleme ile yapılan hesaplamalar daha yavaş ve verimsizdir.

●Peki özyinelemeyi neden kullanıyoruz?
Bazı karmaşık çözülmesi güç problemlerde döngülere göre daha kısa ve anlaşılır olduğu için.

✎Şimdi teorik bilgileri bir kenara bırakıp daha anlaşılır olabilmesi için bir uygulama yapalım.

→4 sayısının faktöriyelini hesaplayalım

Java dilinde özyinelemeyi bu şekilde yazabiliriz.

●Şimdi kodu anlaşılabilir kılması için oluşturduğum modeldeki adımlara bakalım:

Özyineleme modeli

●Şimdi modeldeki adımları biraz daha açalım:

➱Sonlandırma noktası olan Faktoriyel(1) oluşana kadar n*Faktoriyel(n-1) işlemi yapılır.

➱Tabanımız yani sonlandırma noktasına ulaşınca , burada yazdığımız koddaki if bloğuna girmiş oluruz ve return ile 1 döndürülür.

➱Daha sonra 1 sayısı en üst basamaktaki adıma ulaşıncaya kadar işlem sonuçları bir üst basamağa taşınır ,işlenir ve sonucumuz 24 olur.

●Özetle iki önemli nokta olan temel adımı ve yineleme adımını belirledikten sonra rekürsif fonksiyonunu oluşturabiliriz.
____Umarım anlaşılabilir olmuştur,iyi okumalar…

--

--