Özyinelemenin özünde döngüsellerden daha iyi veya daha kötü değildir - her birinin avantajları ve dezavantajları vardır ve bunlar bile programlama diline (ve uygulamaya) bağlıdır.
Teknik olarak, yinelemeli döngüler tipik bilgisayar sistemlerine donanım düzeyinde daha iyi uyum sağlar: makine kodu düzeyinde, bir döngü yalnızca bir test ve koşullu bir atlamadır, oysa yineleme (natal olarak uygulanan) bir yığın çerçevesini itmeyi, zıplamayı, geri dönmeyi ve geri çekmeyi içerir. Yığından OTOH, birçok tekrarlama durumu (özellikle yinelemeli döngülere trivally denk olanlar), yığın push / pop'dan kaçınılabilecek şekilde yazılabilir; özyinelemeli işlev çağrısı geri dönmeden önce işlev gövdesinde gerçekleşen son şey olduğunda ve bu genellikle bir kuyruk çağrısı optimizasyonu (veya kuyruk özyineleme optimizasyonu ) olarak bilinirse mümkündür . Düzgün bir kuyruk çağrısı için optimize edilmiş özyinelemeli işlev, çoğunlukla makine kodu seviyesindeki yinelemeli bir döngüye eşittir.
Bir başka husus, yinelemeli döngülerin, onları saf (yan etkisiz) dil anlambilimiyle uyumsuz kılan yıkıcı durum güncellemeleri gerektirmesidir. Haskell gibi saf dillerin hiç döngü yapısının olmayışının nedeni budur ve diğer birçok işlevsel programlama dili de ya tamamen yoksundur ya da olabildiğince kaçınırlar.
Ancak, bu soruların görüşmelerde bu kadar fazla görünmesinin nedeni, cevaplamak için, birçok hayati programlama kavramını (değişkenler, fonksiyon çağrıları, kapsam ve tabii ki döngüleri ve özyinelemeyi) çok iyi anlamanız gerekir. zihinsel esnekliği, bir soruna iki farklı açıdan, farklı açılardan yaklaşmanıza ve aynı kavramın farklı tezahürleri arasında hareket etmenize olanak tanıyan tabloya getirmek.
Deneyim ve araştırma, değişkenleri, işaretçileri ve özyinelemeyi anlama yeteneğine sahip insanlar ile anlamayanlar arasında bir çizgi olduğunu göstermektedir. Çerçeveler, API'ler, programlama dilleri ve son durumları da dahil olmak üzere programlamadaki hemen hemen her şey, çalışma ve deneyim yoluyla edinilebilir, ancak bu üç temel kavram için bir sezgi geliştiremiyorsanız, programcı olmaya uygun değilsiniz. Basit bir yinelemeli döngüyü özyinelemeli bir sürüme çevirmek, programcı olmayanları filtrelemenin mümkün olan en hızlı yolu hakkındadır - oldukça deneyimsiz bir programcı bile genellikle 15 dakikada bunu yapabilir ve bu çok dilli bir sorun olabilir, böylece aday seçebilir aptal yerine oturmak yerine kendi seçtikleri bir dil.
Bir röportajda böyle bir soru alırsanız, bu iyi bir işarettir: Potansiyel işveren, bir programlama aracının kullanım kılavuzunu ezberleyen kişileri değil, programlayabilenleri arıyor demektir.