Temel Fark: Programlamada özyineleme özyinelemeli bir fonksiyon göz önünde bulundurularak açıklanabilir. Özyinelemeli bir işlev kodu tekrarlamak için kendini tekrar çağıran işlevdir. Öte yandan, yineleme, kodun bir bölümünü tekrarlamak için döngü yapan yinelemeli bir işlevle gerçekleştirilir.
Programlamada, özyineleme ve yineleme, tekrarları elde etmek için kullanılır. Sayısız defa tekrarlanan bir işleme atıfta bulunurlar. Özyineleme, bir koşul yerine getirilinceye kadar bir şeylerin kendisine başvurduğu bir yaklaşıma dayanır. Bir yöntemin kendisini doğrudan ya da dolaylı gibi çağırabilirse özyinelemeli olduğu söylenir -
{
... name () ...
}
veya
geçersiz ad ()
{
... oyun () ...
}
geçersiz oyun () {
... name () ...
}
Başarılı bir özyineleme için, özyineleme sürecinde yapılan her çağrının hesaplamayı basitleştirmesi gerektiği akılda tutulmalıdır. Temel durum tanımlanarak özyineleme elde edilir.
int faktorial (int N)
{
eğer (N == 0) 1;
aksi halde geri dönüş (N * faktörü (N-1));
}
Bu örnekte özyineleme, faktör işlevini yeniden çağırdığı ifadede (N * faktörü (N-1)) kolayca görülebilir. Özyineleme, kodun kısaltılmasına yardımcı olduğundan çok faydalıdır. Ancak, özyineleme performansında biraz yavaş.
fonksiyon faktörü (n)
{
var döngü, sonuç;
sonuç = 1;
için (döngü = 1; döngü <= N ilmek ++)
{
sonuç = sonuç * döngü;
}
sonuç döndürmek;
}
Bu örnekte, döngü 1'den n'ye tamsayılar kullanılarak elde edilir ve döngü <= n ifadesi daha fazla döngülemeyi durdurmak için bir kriter olarak kullanılır. Böylece, aynı sonuçları bir özyineleme ve yineleme kullanarak elde edilebileceği sonucuna varabiliriz. Ancak, ikisi de biraz farklı yaklaşımlara dayanıyor. Herhangi bir özyinelemeli algoritma yinelemeler (döngüler) kullanılarak da yazılabilir.
Özyineleme ve İterasyon Arasında Karşılaştırma:
özyineleme | tekrarlama | |
Tanım | Özyineleme, kodu tekrarlamak için kendisini tekrar çağırdığı özyinelemeli bir işlevi ifade eder. | Yineleme, kodun bir bölümünü tekrarlamak için döngü yapan yinelemeli bir işlevle gerçekleştirilir. |
Önemli nokta | Temel bir durumun belirlenmesi gerekiyor | Bir sonlandırma koşulunun belirlenmesi gerekir |
performans | Nispeten yavaş | Nispeten hızlı |
Hafıza kullanımı | Nispeten daha fazla | Nispeten daha az |
kod | daha küçük | Uzun |
Sonsuz tekrarlama | Sonsuz özyineleme sistemi çökertebilir | Sonsuz döngü, art arda CPU çevrimlerini tüketir |
yapı | seçim | Tekrarlama |
Yerel değişkenler | Gerekli değil | gereklidir |