Dart

Dart Dilinde Özyinelemeli Fonksiyonlar (Recursive Function)

Dart dilinde özyinelemeli fonksiyonlar (recursive functions), en basit tanımıyla kendi kendini çağıran fonksiyonlara denir.

Her ne kadar özyineleme deyince zihnimizde anlamını çağrıştıracak tanımlar belirse de özyineleme nedir sorusuna cevap vermekte fayda var. Zira ne amaçla kullanıldığı tanımla daha da anlaşılır olacaktır.

Özyineleme, bir fonksiyonun yinelemeli bir görevi çözmek için ilgili görevi alt görevlere bölerek kendisini alt rutin olarak çağırdığı süreç olarak tarif edilebilir. Bu demektir ki döngü deyimleri (for, while vb.) kullanılarak yazılan uygulamalar özyinelemeli fonksiyonlarla da pekala yapılabilir. Bununla birlikte, özyineleme dikkatli bir şekilde uygulanmalıdır, aksi takdirde işlevi sonlandıracak herhangi bir temel koşul sağlanmadığında sonsuz bir döngüye yol açabilir.

Bu yöntem karmaşık bir matematiksel hesaplama görevini alt görevlere bölerek çözmek için etkili bir yaklaşımdır. İşte bu nedendir ki bu problem çözme yaklaşımı Böl ve Yönet (Divide and Conquer) olarak da bilinir.

Özyineleme fonksiyonları, en az miktarda kod gerektiren karmaşık görevlerde daha verimli bir programlama yöntemi olarak kabul edilir. Bu tarz fonksiyonlar, nihai çıktıyı hesaplamak veya döndürmek için kendisini birkaç kez tekrarlar. Programcıların minimum kodla verimli programlar yazmasına izin verdikleri için bilgisayar programcılığında oldukça yaygındır.

Özyineleme, aynı fonksiyona yönelik birkaç sayıda yinelemeli çağrıya yol açar, ancak özyinelemeyi sonlandırmak için bir temel duruma sahip olmak önemlidir.

Aşağıdaki faktöriyel örneği özyineleme fonksiyonların mantığını anlatan en bilindik örneklerden biridir:

Çıktı: 5’in faktöriyeli: 120

Kodu çalıştırmak için: DarPad

Dart dilinde özyinelemeli fonksiyonlar diğer programlama dillerinde olduğu programın hızı, yığın ek yükleri nedeniyle daha yavaştır.

İlgili Makaleler

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Başa dön tuşu

😔 Reklam Engelleyicisi 😔

Sitenin varlığını sürdürebilmesi adına reklam engelleyicinizi (Adblocker) kapatmanızı rica ediyoruz 😔