Veri Yapısında Özyineleme: Nasıl Çalışır, Türleri ve Ne Zaman Kullanılır?
Yayınlanan: 2020-05-22Veri yapısında özyinelemenin tanımıyla başlayalım. Daha sonra farklı özyineleme türlerini ve farklı sorunları çözmek için özyinelemenin nasıl kullanıldığını tartışacağız.
İçindekiler
özyineleme nedir?
Basit bir deyişle, özyineleme bir problem çözme ve bazı durumlarda çok özel ve ayrıcalıklı bir özelliğe sahip bir programlama tekniğidir. Özyinelemede, bir işlev veya yöntem, sorunu çözmek için kendini çağırma yeteneğine sahiptir. Özyineleme süreci, bir problemi kendisinin daha küçük çeşitlerine dönüştürerek çözmeyi içerir.
Bir fonksiyonun kendisini çağırdığı süreç, doğrudan olabileceği gibi dolaylı olarak da gerçekleşebilir. Çağrıdaki bu farklılık, biraz sonra bahsedeceğimiz farklı özyineleme türlerine yol açar. Özyineleme kullanılarak çözülebilecek sorunlardan bazıları, Grafik DFS'si, Hanoi Kuleleri, Farklı Ağaç Geçişleri Türleri ve diğerleridir. Özyineleme ve diğer veri bilimi kavramları hakkında bilgi edinmek için IIIT-B'nin çevrimiçi veri bilimi kurslarına göz atın.
Okuyun: 13 İlginç Veri Yapısı Proje Fikri
Özyineleme nasıl çalışır?
Özyineleme kavramı, bir problemin bir veya daha küçük versiyonlarda temsil edilmesi durumunda çok daha kolay ve daha kısa sürede çözülebileceği fikri üzerine kuruludur. Özyinelemeyi durdurmak için temel koşullar eklemek, bir sorunu çözmek için bu algoritmayı kullanmanın bir başka önemli parçasıdır.
Kodlama Deneyimi Gerektirmez. 360 ° Kariyer desteği. IIIT-B ve upGrad'dan Makine Öğrenimi ve Yapay Zeka alanında PG Diploması.İnsanlar genellikle bir varlığı kendi terimleriyle tanımlamanın mümkün olmadığına inanırlar. Özyineleme bu teorinin yanlış olduğunu kanıtlar. Ve bu teknik doğru yapılırsa çok güçlü sonuçlar verebilir. Birkaç örnekle özyinelemenin nasıl çalıştığını görelim. cümle nedir? İki veya daha fazla cümlenin bağlaç yardımıyla birleştirilmesi olarak tanımlanabilir. Benzer şekilde, bir klasör, dosya ve klasörleri depolamak için kullanılan bir depolama aygıtı olabilir. Bir ata, soy ağacında birinin ebeveyni ve başka bir aile üyesinin atası olabilir.
Özyineleme, birkaç çok basit kelime kullanarak karmaşık durumları tanımlamaya yardımcı olur. Bir atayı genellikle nasıl tanımlarsınız? Bir ebeveyn, bir büyükanne veya büyükbaba veya büyük bir büyükanne ve büyükbaba. Bu devam edebilir. Benzer şekilde, bir klasör tanımlamak zor bir iş olabilir. Kendi başlarına dosya ve klasör olabilecek bazı dosya ve klasörleri tutan herhangi bir şey olabilir ve bu tekrar devam edebilir. Bu nedenle özyineleme, durumları tanımlamayı normalden çok daha kolay hale getirir.
Özyineleme de yeterince iyi bir programlama tekniğidir. Özyinelemeli bir altyordam, doğrudan veya dolaylı olarak kendisini çağıran bir altyordam olarak tanımlanır. Bir alt yordamın doğrudan çağrılması, alt yordamın tanımının, tanımlanmış olan alt yordamı çağırma çağrı deyimine zaten sahip olduğu anlamına gelir.
Öte yandan, bir alt yordamın dolaylı çağrılması, bir alt yordam başka bir alt yordamı çağırdığında ve daha sonra orijinal alt yordamı çağırdığında gerçekleşir. Özyineleme, çok karmaşık bir görevi açıklamak için birkaç satır kod kullanabilir. Şimdi dikkatimizi daha önce değindiğimiz farklı özyineleme türlerine çevirelim.
Ayrıca okuyun: Öğrenilecek En İyi 6 Programlama Dili
Özyineleme türleri
Daha önce bahsedildiği gibi sadece iki tür özyineleme vardır. Birbirlerinden nasıl farklı olduklarını görelim. Doğrudan özyineleme, yalnızca orijinal işlevi, yöntemi veya alt yordamı çağırmanın tek bir adımını içerdiğinden daha basit bir yoldur. Öte yandan, dolaylı özyineleme birkaç adım içerir.
İlk çağrı, orijinal yöntemle ikinci bir yönteme yapılır, bu da orijinal yöntemi çağırır. Bu çağrı zinciri, bir dizi yöntem veya işlev içerebilir. Basit bir deyişle, dolaylı özyinelemenin derinliğinde her zaman bir varyasyon olduğunu ve bu derinlikteki varyasyonun sürece dahil olan yöntemlerin sayısına bağlı olduğunu söyleyebiliriz.
Doğrudan özyineleme, yalnızca tek bir işlevi kendi başına çağırmak için kullanılabilir. Öte yandan, dolaylı özyineleme, diğer işlevlerin yardımıyla birden fazla yöntemi veya işlevi çağırmak için kullanılabilir ve bu da birkaç kez. Dolaylı özyineleme, doğrudan muadili yaparken ek yük oluşturmaz.

Özyineleme ne zaman kullanılır?
Özyineleme veya yinelemeyi kullanabileceğiniz durumlar vardır. Ancak, her zaman soruna daha doğal uyan bir çözüm seçmelisiniz. Veri soyutlama söz konusu olduğunda özyineleme her zaman uygun bir seçenektir. İnsanlar genellikle verileri ve ilgili işlemleri tanımlamak için özyinelemeli tanımlar kullanır.
Ve yinelemenin, veriler üzerinde farklı işlemlerin uygulanmasıyla ilgili problemler için çoğunlukla doğal çözüm olduğunu söylemek yanlış olmayacaktır. Bununla birlikte, özyineleme ile ilgili, onu her sorun için en iyi çözüm yapmayabilecek bazı şeyler vardır. Bu durumlarda, yinelemeli yöntem gibi bir alternatif en uygunudur.
Özyinelemenin uygulanması, genellikle fazlalık ile sonuçlanabilecek çok fazla yığın alanı kullanır. Özyinelemeyi her kullandığımızda, bu yöntemin yeni bir örneğinin oluşturulmasıyla sonuçlanan bir yöntem çağırırız. Bu yeni örnek, yığında depolanan ve dönüşte alınan farklı parametreler ve değişkenler taşır. Bu nedenle, özyineleme diğerlerinden daha basit bir çözüm olsa da, genellikle en pratik değildir.
Ayrıca, farklı problemler için yineleme veya özyinelemeyi seçmeye yardımcı olabilecek bir dizi önceden tanımlanmış kuralımız yok. Özyineleme kullanmanın en büyük yararı, özlü bir yöntem olmasıdır. Bu, okumayı ve bakımını normalden daha kolay hale getirir. Ancak özyinelemeli yöntemler, çok fazla depolama alanı kapladığından ve uygulama sırasında çok fazla zaman harcadıklarından, elimizdeki en verimli yöntemler değildir.
Birkaç şeyi akılda tutmak, bir sorun için özyineleme seçmenin doğru yol olup olmadığına karar vermenize yardımcı olabilir. Çözeceğiniz problem özyinelemeli terimlerle anlatılıyorsa ve özyinelemeli çözüm daha az karmaşık görünüyorsa özyinelemeyi seçmelisiniz.
Özyinelemenin çoğu durumda kullanmak istediğiniz algoritmaların uygulanmasını basitleştirdiğini bilmelisiniz. Şimdi, yineleme ve özyinelemeyi kullanmayla ilgili karmaşıklıklar belirli bir problem için aynıysa, daha verimli olma şansı daha yüksek olduğundan yineleme ile devam etmelisiniz.
Şuna da bakın : İş Bulmak İçin En İyi 23 Bilgisayar Programlama Kursu
Çözüm
Ancak, karar vermenin o kadar kolay olmayabileceği durumlar olabilir. Verimlilik ve basitlik arasında seçim yapmanız gerekir. Deneyimli bir tasarımcıysanız, verimliliğe ne zaman daha fazla önem vermeniz gerektiğini ve bunun yerine sadeliği veya kısalığı seçmenin yolunun tam olarak ne olduğunu bilirsiniz.
Veri yapısı, veri bilimi hakkında bilgi edinmek istiyorsanız, IIIT-B & upGrad'ın çalışan profesyoneller için oluşturulan ve 10'dan fazla vaka çalışması ve proje, pratik uygulamalı atölye çalışmaları, endüstri ile mentorluk sunan Veri Biliminde Yönetici PG Programına göz atın. uzmanlar, sektör danışmanlarıyla bire bir, 400+ saat öğrenim ve en iyi firmalarla iş yardımı.
Özyinelemenin en yaygın gerçek hayattaki uygulaması nedir?
Özyineleme, sorunu çözmek için işlevin dolaylı veya doğrudan kendisini çağırdığı bir süreçtir. Özyineleme işlemini gerçekleştiren işleve özyinelemeli işlev denir. Özyinelemeli bir algoritma yardımıyla oldukça kolay çözülebilecek bazı problemler vardır.
Özyinelemenin gerçek hayattaki en yaygın uygulaması, Rs ile dolu bir kutuda ne kadar paranız olduğunu hesaplamanızdır. 100 not. Çok fazla not varsa, arkadaşınızdan tüm yığını ikiye bölerek aynı işi yapmasını isteyebilirsiniz. İkiniz de saymayı bitirdiğinizde, toplam miktarı elde etmek için her iki sonucu da toplarsınız.
Özyinelemeli bir işlevin sahip olması gereken özellikler nelerdir?
Özyinelemeli bir işlev, sonsuz bir döngü olarak devam etme yeteneğine sahiptir. Herhangi bir özyinelemeli işlevin sonsuz bir döngüye girmesini önlemek için tanımlanması gereken iki özellik vardır. Onlar:
1. Temel kriterler – Önceden tanımlanmış bir temel koşul olmalıdır. Bu temel kriter yerine getirildiğinde, fonksiyon kendini çağırmayı durduracaktır.
2. Aşamalı yaklaşım – Özyinelemeli çağrılar, aşamalı bir yaklaşımdan oluşmalıdır. İşleve özyinelemeli bir çağrı yapıldığında, temel koşula yakın ulaşıyor olmalıdır.
Özyinelemenin avantajları ve dezavantajları nelerdir?
Özyinelemenin bazı avantajları, özyinelemeli bir işlevde yalnızca temel koşulu ve özyinelemeli durumu tanımlamanız gerekmesidir. Bu, kodu yinelemeli bir koda kıyasla oldukça basit ve kısa yapar ve Ağaç Geçişi ve Grafik gibi bazı sorunlar doğal olarak özyinelemelidir.
Özyinelemenin en büyük dezavantajı, yinelemeli bir programa kıyasla özyinelemeli işlevler için daha fazla alan gereksinimlerinin olmasıdır, çünkü her işlev çağrısı temel koşul karşılanana kadar yığında kalmak zorundadır ve ayrıca daha büyük zaman gereksinimleri vardır, çünkü yığın her işlev çağrısından sonra büyür ve son yanıt yalnızca yığındaki tüm öğeleri çıkardıktan sonra döndürülebilir.