Tavsiye, 2024

Editörün Seçimi

Özyineleme ve İterasyon Arasındaki Fark

Özyineleme ve yineleme, art arda her iki talimat setini de yürütür. Özyineleme, fonksiyondaki bir ifadenin kendisini tekrar tekrar çağırmasıdır. Yineleme, kontrol koşulu yanlış hale gelinceye kadar bir döngü tekrar tekrar çalıştırıldığında gerçekleşir. Özyineleme ve yineleme arasındaki temel fark, özyinelemenin daima bir fonksiyona uygulanan bir süreç olmasıdır. Yineleme, tekrar tekrar yürütmek istediğimiz komutlar kümesine uygulanır.

Karşılaştırma Tablosu

Karşılaştırma için temelözyinelemetekrarlama
TemelBir fonksiyon gövdesindeki ifade, fonksiyonun kendisini çağırır.Talimat setinin tekrar tekrar yürütülmesine izin verir.
BiçimÖzyinelemeli işlevde, yalnızca sonlandırma koşulu (temel durum) belirtilir.İterasyon, başlatma, koşul, ifadenin döngü içinde çalıştırılmasını ve kontrol değişkenini güncelleme (artırma ve azaltma) işlemlerini içerir.
SonlandırmaÖzyinelemeli çağrı yapılmadan geri dönmeye zorlamak için işlevin gövdesinde koşullu bir ifade bulunur.Yineleme ifadesi, belirli bir koşul elde edilinceye kadar tekrar tekrar yürütülür.
Şartİşlev, (temel durum) olarak adlandırılan bazı koşullara yakınlaşmazsa, sonsuz özyinelemeye yol açar.Yinelemeli ifadedeki kontrol koşulu hiçbir zaman yanlış olmazsa, sonsuz yinelemeye yol açar.
Sonsuz tekrarlamaSonsuz özyineleme sistemi çökertebilir.Sonsuz döngü, art arda CPU döngülerini kullanır.
UygulamalıÖzyineleme her zaman işlevlere uygulanır.Yineleme yineleme deyimlerine veya "döngüler" uygulanır.
yığınYığın, işlev her çağrıldığında yeni yerel değişkenler ve parametreler kümesini depolamak için kullanılır.Yığın kullanmaz.
havaiÖzyineleme, tekrarlanan işlev çağrılarının ek yüküne sahiptir.Tekrarlanan işlev çağrısı ek yükü yok.
hızYürütmede yavaş.Yürütmede hızlı.
Kodun BoyutuÖzyineleme, kodun boyutunu azaltır.Yineleme kodu daha uzun yapar.

Özyineleme tanımı

C ++, bir fonksiyonun kendi kodu dahilinde kendisini çağırmasını sağlar. Bu, fonksiyon tanımının kendisine bir fonksiyon çağrısına sahip olduğu anlamına gelir. Bazen “ dairesel tanım ” olarak da adlandırılır. Yerel değişkenler ve işlev tarafından kullanılan parametreler, işlev kendini çağırdığında ve yığının en üstünde depolandığında yeni oluşturulur. Ancak, bir işlev kendini her çağırdığında, bu işlevin yeni bir kopyasını oluşturmaz. Özyinelemeli işlev kodun boyutunu önemli ölçüde azaltmaz ve bellek kullanımını bile iyileştirmez, ancak yinelemeyle karşılaştırıldığında bazılarını yapar.

Özyinelemeyi sona erdirmek için, fonksiyonun tanımına bir özyinelemeli çağrı yapmadan geri dönmeye zorlamak için bir select ifadesi eklemelisiniz. Bir özyinelemeli işlev tanımında select deyiminin olmaması, bir kez çağrıldığında sonsuz özyinelemede işleve izin verecektir.

Numaranın faktörünü döndürecek bir fonksiyon ile özyinelemeyi anlayalım.

 int faktorial (int num) {int cevap; eğer (num == 1) {dönüş 1; } else {answer = factorial (num-1) * num; // özyinelemeli çağrı} return (cevapla); } 

Yukarıdaki kodda, diğer kısımdaki ifade, özeti içinde bulunduğu işlev faktörü () olarak adlandırdığından özyinelemeyi gösterir.

İterasyonun Tanımı

Yineleme, yineleme deyimindeki koşul yanlış oluncaya kadar komut kümesini art arda yürütme işlemidir. İteration deyimi, iteration deyimi içindeki deyimlerin başlatılması, karşılaştırılması, yürütülmesini ve son olarak kontrol değişkeninin güncellenmesini içerir. Kontrol değişkeni güncellendikten sonra tekrar karşılaştırılır ve yineleme ifadesindeki koşul yanlış olduğu ortaya çıkana kadar işlem kendini tekrar eder. Yineleme ifadeleri “for” döngüsü, “while” döngüsü, “do-while” döngüsüdür.

Yineleme ifadesi değişkenleri saklamak için bir yığın kullanmaz. Dolayısıyla, yineleme ifadesinin yürütülmesi özyinelemeli işlevle karşılaştırıldığında daha hızlıdır. Yineleme işlevi bile, yürütmesini özyinelemeli işlevden daha hızlı yapan yinelenen işlev çağrısı ek yüküne sahip değildir. Kontrol koşulu yanlış olduğunda yineleme sonlandırılır. Yineleme ifadesinde kontrol koşulunun olmaması sonsuz bir döngüye neden olabilir veya bir derleme hatasına neden olabilir.

Yukarıdaki örneğe ilişkin yinelemeyi anlayalım.

 int faktorial (int num) {int answer = 1; // başlatılmadan önce bir çöp değeri içerebileceği için başlatılması gerekiyor (int t = 1; t> num; t ++) // iteration {answer = answer * (t); dönüş (cevap); }} 

Yukarıdaki kodda, fonksiyon, iteration deyimini kullanarak sayının faktörünü döndürür.

Özyineleme ve İterasyon Arasındaki Temel Farklılıklar

  1. Özyineleme, bir programdaki bir yöntemin sürekli olarak kendisini çağırması, yinelemenin ise bir programdaki bir dizi komutun art arda yürütülmesidir.
  2. Bir özyinelemeli yöntem, bir dizi talimat, bir ifadenin kendisini ve bir sonlandırma koşulunu içerirken yineleme ifadeleri, bir döngü içindeki bir başlatma ve artış, koşul, bir talimat seti ve bir kontrol değişkeni içerir.
  3. Koşullu bir ifade, özyinelemenin sona ermesine ve kontrol değişkeninin değerinin yineleme ifadesinin sona ermesine karar vermesine karar verir.
  4. Eğer yöntem fesih koşuluna yol açmazsa, sonsuz özyinelemeye girer. Öte yandan, kontrol değişkeni hiçbir zaman sonlandırma değerine yol açmazsa, yineleme ifadesi sonsuz olarak yinelenir.
  5. Sonsuz özyineleme sistem çökmesine neden olurken, sonsuz yineleme CPU döngülerini tüketir.
  6. Özyineleme her zaman metoda uygulanır, yineleme ise komut setine uygulanır.
  7. Özyinleme sırasında oluşturulan değişkenler yığında depolanır, yineleme ise yığın gerektirmez.
  8. Özyineleme, yinelenen işlev çağrısının genel giderine neden olurken yineleme, genel gider çağrılan bir işleve sahip değildir.
  9. İşlev çağrısı ek yükü yinelemenin yürütülmesi nedeniyle yavaş, yinelemenin yürütülmesi daha hızlı olur.
  10. Özyineleme, kod boyutunu azaltırken yinelemeler kodu daha uzun yapar.

Sonuç:

Özyinelemeli işlevi yazması kolaydır, ancak yinelemeyle karşılaştırıldığında iyi performans göstermezler; yinelemeyi yazması zordur ancak performans özyinelemeye göre iyidir.

Top