Özyineleme, şeylere yinelemekten daha doğal bir bakış açısıdır. Örneğin, bir ikili ağacın düzensiz geçişini düşünün: inorder(left); process(); inorder(right);
bir yığını açıkça korumaktan çok daha basittir.
Çok derine inmediğiniz sürece (yığını üfleme), kaynak kullanımındaki fark genellikle önemsizdir. Genel olarak endişelenme. Basit kod normalde elle optimize edilmiş koddan daha iyidir, ancak istisnalar vardır. Doğru normalde hızlı olmaktan iyidir.
Herhangi bir özyinelemeli algoritma yinelemeli bir algoritma olarak ifade edilebilir, ancak açık bir yığın tutmanız gerekebilir (örtük olarak işlenen çağrı yığınına karşılık gelir). Sonuçta, özyinelemeli bir işlevi derlerseniz, bir yığını manipüle etmeye ve işlev boyunca döngü yapmaya dayanan bir şey elde edersiniz ve bu yinelemelidir.
Kuyruk özyinelemeli işlevler kolayca döngülere dönüştürülebilir ve bir yığına gerek yoktur, ancak bu özel bir durumdur.