1 dk, tahmini okuma süresi

Örneklerle Basit Özyinemeleme

En Son Güncelleme: 14 Eylül, 2022

§Bir Açıklama ile Başlayalım

Özyineleme, bir koşul sağlanana kadar kendini tekrar tekrar çağıran bir fonksiyon olarak basitçe açıklanabilir. Yeni başlayanlar için göz korkutucu görünebilir, ancak doğru kullanıldığında yinelemelerden çok daha iyi performans gösterirler.

Aynı fonksiyonu tekrar tekrar çağırdığımızı düşünürsek, kodumuzu kesinlikle daha kısa, daha net ve kesinlikle okunması ve anlaşılması daha kolay hale getiriyoruz.

Bir özyineleme yaratırken dikkatli olmalıyız, yoksa kolayca ve sonsuz döngü oluşturabiliriz.

Fonksiyon kendini her çağırdığında başka bir yığın oluşturulur ve bir koşul karşılanana kadar yığın kaldırılmaz. Bu, özyinelemelerin daha fazla bellek kullanmasına neden olur. Yığınlarda oluşturulan değerler bu şekilde hafızada tutulur. Temel koşul karşılanana kadar yığınlar birikmeye devam eder. Temel koşul karşılandığında, yığınlar sondan başa doğru temizlenir. Bu, eklenen son yığının önce kaldırıldığı anlamına gelir.

Her özyinelemeli çağrı bellekte bir yığın oluşturduğundan, bir programcı olarak yığın taşmasına neden olmamak konusunda dikkatli olmanız gerekir. Basitçe programınızın olması gerekenden fazla bellek kullanması olarak açıklanabilir. Bundan daha derine inmek istiyorsanız buraya bir göz atabilirsiniz. Bu bulabildiğim en basit açıklamalardan biri.

§Pratik Örnekler

Özyinelemeleri kullanan problemlerin iyi bilinen ve üstesinden gelinmesi muhtemelen en kolay olanları Fibonacci Algoritması ve faktöriyelin bulunmasıdır.

function factorial(x) { // Base Codition if (x == 0) return 1 else return x * factorial(x - 1); } function fibonacci(num) { // Base Condition if(num === 1 || num === 0) return num; else return fibonacci(num-1) + fibonacci(num - 2); }

Bana sorarsanız oldukça kullanışlı ve kısa.

§Özyinelemeyi Kullanmanın Avantajları ve Dezavantajları

Yukarıdaki örneklerden de görebileceğimiz gibi, aynı işlevi yinelemeler kullanarak da oluşturabiliriz. Onlar da biraz daha anlaşılır olacaktır.

Ayrıca, temel koşula ulaşılana kadar yığınlarınızın birikmeye devam ettiği gerçeğini de göz önünde bulundurmalıyız. Bu, yineleme kullanan bir alternatiften çok daha fazla bellek kullanacağınız anlamına gelir.

DFS ve BFS algoritmaları gibi ağaç geçişleri (tree traversals), özyinelemeli çözümlere dayanır. Alternatifin çok ayrıntılı ve okunması ve anlaşılması daha zor olduğunu göreceksiniz.

Özyineleme şimdiye kadar kaçındığınız bir konuysa, işte bu kadar! Artık neden ve nasıl çalıştığına dair temel bir anlayışa sahipsiniz.

Ilker Akbiyik