Özyineleme ve İterasyon Arasındaki Fark

Yazar: Laura McKinney
Yaratılış Tarihi: 1 Nisan 2021
Güncelleme Tarihi: 5 Mayıs Ayı 2024
Anonim
Özyineleme ve İterasyon Arasındaki Fark - Teknoloji
Özyineleme ve İterasyon Arasındaki Fark - Teknoloji

İçerik


Özyineleme ve yineleme, tekrar tekrar komut setini 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 şudur: yineleme her zaman bir işleve uygulanan bir işlemdir. tekrarlama tekrar tekrar yürütmek istediğimiz komutlar kümesine uygulanır.

  1. Karşılaştırma Tablosu
  2. Tanım
  3. Anahtar Farklılıklar
  4. Sonuç

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.Yineleme ifadesindeki 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ızUygulamada 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 buna da "denir"dairesel tanım“. 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 sonlandırmak için, fonksiyonun tanımına bir özyinelemeli çağrı yapmadan geri dönmeye zorlamak için bir select ifadesi dahil etmelisiniz. 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. Bu nedenle, yineleme ifadesinin yürütülmesi özyinelemeli işlev ile 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.

  1. Özyineleme, bir programdaki bir yöntemin sürekli olarak kendisini çağırmasıdır, oysa yineleme, bir programdaki bir dizi komutun tekrar tekrar yürütüldüğü zamandır.
  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şkenini içerir.
  3. Koşullu bir ifade, özyinelemenin sona ermesine ve kontrol değişkeninin değerinin yineleme bildiriminin 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 tekrarlama, sistemin çökmesine neden olabilir, sonsuz yineleme ise CPU döngülerini tüketir.
  6. Özyineleme her zaman yönteme uygulanır, yineleme ise komut dizisine uygulanır.
  7. Özyineleme sırasında oluşturulan değişkenler yığında saklanı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 ise daha hızlı olur.
  10. Özyineleme, kod boyutunu azaltırken yinelemeler kodu daha uzun hale getirir.

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.