ForumSinsi - 2006 Yılından Beri

ForumSinsi - 2006 Yılından Beri (http://forumsinsi.com/index.php)
-   ForumSinsi Ansiklopedisi (http://forumsinsi.com/forumdisplay.php?f=476)
-   -   Kuyruk Özyineleme (http://forumsinsi.com/showthread.php?t=541849)

Prof. Dr. Sinsi 08-21-2012 10:55 PM

Kuyruk Özyineleme
 

Bilgisayar biliminde, kuyruk özyineleme özel bir Bilişim bilimi

özyineleme çeşididir.

Tanımı

Bir Yinelge

işlevin döndüreceği değer, doğrudan çağırdığı işlevin döndüreceği değere eşitse buna kuyruk özyineleme denir. Konu özyineleme ile sınırlı olmasa da, özyineleme sırasında işlev çağırma miktarının çokluğu nedeniyle önem kazanır.

Önemi

İşlev çağırma, dolayısıyla özyineleme göreceli olarak pahalı bir iştir. Bunun sebebi işlevlerin çağırılması ve sonlanması arasında yığından (stack) ve muhtemelen Aggregate, group

öbekten (heap) yer tüketmesidir. Özyineleme sırasında çağırılan işlev, kendi içinden çağırılan bütün işlevlerin bitmesini beklemektedir. Bu zincir yapı Group

algoritma ve girdiye bağlı olarak çok uzayabilir. Bu durumda eşdeğer Algoritma Alm. Algorithmus (m), Fr. Algoritme (m), İng. Algorithm. Matematikte sayılarla yapılan her türlü hesaplamanın sistematik metoduna verilen genel isim.

döngüsel algoritmadan yavaş olacağı gibi, fazla hafıza tüketimi nedeniyle hesaplama bitmeden sonlandırılabilir.

Eğer özyineleme kuyruk yapısındaysa, Cycle

derleyici ya da

yorumlayıcı çalışma zamanında yığının büyümesini engelleyebilir. Bunun sebebi, artık işlevin yığında yer kaplamasına gerek kalmaması ve kendisini çağıran işleve değer olarak doğrudan kendi çağırdığı işlevin çıktısının döndürülebilmesidir. Bu tarz Yorumlayıcı (interpreter), kaynak kodunu satır satır Makine dilimakine koduna çeviren ve çalıştıran yazılım türüne verilen addır.

eniyileme işlemleri her derleyici tarafından gerçekleştirilmese de özellikle yaygın işlevsel dillerin derleyicileri tarafından gerçekleştirilir.

basit bir yığın örneği ve özyineleme, kuyruk özyineleme dönüşümü anlatılmalı

Örnekler
Faktöriyel işlevi basit olarak Standart ML`de şu şekilde tanımlanabilir:
fun fak 0 = 1 fak n = n fak(n - 1)

Özyinelemenin gerçekleştiği n
eq0 durumunda döndürülen değer n fak(n-1) olduğundan bu kod kuyruk özyineleme yapısında değildir.

Öte yandan ikinci bir işlev (fak2) sayesinde bu kod kolaylıkla kuyruk yapıya çevirilebilir;
fun fak n = let fun fak2 0 p = p fak2 m p = fak2 (m-1) (p m) in fak2 n 1end

Bu makale, online kullanıcı topluluğu tarafından oluşturulan ve düzenlenen özgür ansiklopedi projesi Wikipedia'nın Türkçe versiyonu Vikipedi'deki Kuyu Kebabı maddesinden kopyalanmıştır. Bu makale, GNU Özgür Belgeleme Lisansı ilkeleri kapsamında özgürce kullanılabilir.Aydın iline bağlı bir ilçe. Yüzölçümü 792 kilometrekare, nüfusu 64.675 dir. İlçenin yüzeyi Menderes nehrinin meydana getirdiği, çok verimli ovamsı alüvyal vadilerden ve yer yer ormanla kaplı...


Powered by vBulletin®
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.