Özyineleme ve Yineleme, programlama sorunlarını çözmek için kullanılabilir. Sorunu özyineleme veya yineleme kullanarak çözme yaklaşımı, sorunu çözme yoluna bağlıdır. temel fark özyineleme ve yineleme arasında özyineleme, aynı işlev içindeki bir işlevi çağırmak için bir mekanizmadır; yineleme, verilen koşul geçerli olana kadar bir dizi komutu tekrarlamaktır. Özyineleme ve Yineleme, algoritmalar geliştirmek ve yazılım uygulamaları oluşturmak için başlıca tekniklerdir.
1. Genel Bakış ve Temel Fark
2. Özyineleme nedir
3. İterasyon nedir
4. Özyineleme ve Yineleme Arasındaki Benzerlikler
5. Yan Yana Karşılaştırma - Tablo Şeklinde Özyineleme ve Yineleme
6. Özet
Bir işlev kendisini işlev içinde çağırdığında, Özyineleme olarak bilinir. İki tür özyineleme vardır. Sonlu özyineleme ve sonsuz özyineleme. Sonlu özyineleme sonlandırma koşulu var. Sonsuz özyineleme sonlandırma koşulu yok.
Özyineleme faktöriyelleri hesaplamak için program kullanılarak açıklanabilir.
n! = n * (n-1) !, n> 0 ise
n! = 1, n = 0 ise;
Faktöriyeli 3 (3! = 3 * 2 * 1) değerini hesaplamak için feryat koduna bakın.
intmain ()
int değeri = faktöryel (3);
printf (“Faktöriyel% d \ n”, değer);
dönüş 0;
intfactorial (intn)
eğer (n == 0)
dönüş 1;
Başka
dönüş n * faktöriyel (n-1);
Faktöriyeli (3) çağırırken, bu fonksiyon faktöriyeli (2) olarak çağırır. Faktöriyel (2) çağrıldığında, bu fonksiyon faktöriyel (1) 'i çağırır. Ardından faktöriyel (1) faktöriyeli (0) olarak adlandırır. faktöriyel (0) dönecektir 1. Yukarıdaki programda, “if block” daki n == 0 koşulu temel koşuldur. Aynı şekilde faktöriyel fonksiyon tekrar tekrar çağrılmaktadır..
Yinelemeli işlevler yığınla ilişkilidir. C dilinde ana programın birçok işlevi olabilir. Bu nedenle, main () çağrı işlevidir ve ana program tarafından çağrılan işlev çağrılan işlevdir. İşlev çağrıldığında, çağrı çağrılan işleve verilir. İşlev yürütme tamamlandıktan sonra kontrol ana durumuna geri döner. Ardından ana program devam eder. Böylece, yürütmeye devam etmek için bir etkinleştirme kaydı veya yığın çerçevesi oluşturur.
Şekil 01: Özyineleme
Yukarıdaki programda, anadan faktöriyel (3) çağrıldığında çağrı yığınında bir aktivasyon kaydı oluşturur. Ardından, yığının üstünde faktöryel (2) yığın çerçeve oluşturulur. Aktivasyon kaydı yerel değişkenler vb. Hakkında bilgi tutar. Fonksiyon her çağrıldığında yığının üstünde yeni bir yerel değişkenler kümesi oluşturulur. Bu yığın çerçeveleri hızı yavaşlatabilir. Benzer şekilde özyinelemede, bir işlev kendini çağırır. Özyinelemeli bir fonksiyon için zaman karmaşıklığı, fonksiyonun kaç kez çağrıldığına bağlıdır. Bir işlev çağrısı için zaman karmaşıklığı O (1) 'dir. N yinelemeli çağrı sayısı için zaman karmaşıklığı O (n).
Yineleme, verilen koşul gerçekleşene kadar tekrarlanan bir komut bloğudur. Yineleme, “for loop”, “do-while loop” veya “while loop” kullanılarak yapılabilir. “For loop” sözdizimi aşağıdaki gibidir.
for (başlatma; koşul; değiştir)
// ifadeler;
Şekil 02: “döngü akış diyagramı için”
Başlatma adımı önce yürütülür. Bu adım döngü kontrol değişkenlerini bildirmek ve başlatmaktır. Koşul doğruysa, süslü parantez içindeki ifadeler yürütülür. Bu ifadeler koşul doğru olana kadar yürütülür. Koşul yanlışsa, kontrol “for loop” dan sonraki ifadeye gider. İfadeler döngü içinde yürütüldükten sonra, kontrol bölümü değiştirmeye gider. Döngü kontrol değişkenini güncellemektir. Ardından durum tekrar kontrol edilir. Koşul doğruysa, süslü parantez içindeki ifadeler yürütülür. Bu şekilde “for döngüsü” tekrar eder.
“While döngüsü” nde, döngü içindeki ifadeler koşul doğru olana kadar yürütülür.
while (koşul)
// ifadeleri
"Do-while" döngüsünde, durum, döngünün sonunda kontrol edilir. Böylece, döngü en az bir kez yürütülür.
yapmak
// ifadeleri
while (koşul)
Yineleme (“for loop”) kullanarak 3 (3!) Faktöriyelini bulmak için program aşağıdaki gibidir.
int main ()
intn = 3, faktöryel = 1;
inti;
için (i = 1; i<=n ; i++)
faktöryel = faktöryel * i;
printf (“Faktöriyel% d \ n”, faktöriyel);
dönüş 0;
Özyineleme vs Yineleme | |
Özyineleme, aynı işlev içindeki bir işlevi çağırmanın bir yöntemidir. | Yineleme, verilen koşul geçerli olana kadar yinelenen bir komut bloğudur. |
Alan Karmaşıklığı | |
Özyinelemeli programların alan karmaşıklığı yinelemelerden daha yüksektir. | Alan karmaşıklığı yinelemelerde daha düşüktür. |
hız | |
Özyineleme yürütmesi yavaş. | Normalde, yineleme özyinelemeden daha hızlıdır. |
Şart | |
Eğer fesih koşulu yoksa, sonsuz bir özyineleme olabilir. | Durum asla yanlış olmazsa, sonsuz bir yineleme olacaktır. |
yığın | |
Özyinelemede, işlev çağrıldığında yığın yerel değişkenleri saklamak için kullanılır. | Bir yinelemede, yığın kullanılmaz. |
Kod Okunabilirliği | |
Özyinelemeli bir program daha okunabilir. | Yinelemeli programı okumak yinelemeli bir programdan daha zordur. |
Bu makalede, özyineleme ve yineleme arasındaki fark tartışılmıştır. Her ikisi de programlama problemlerini çözmek için kullanılabilir. Özyineleme ve yineleme arasındaki fark, özyinelemenin aynı işlev içindeki bir işlevi çağırmak için bir mekanizma olması ve verilen koşul geçerli olana kadar bir dizi komutu tekrarlamak için yinelemesidir. Bir problem özyinelemeli olarak çözülebilirse, yinelemeler kullanılarak da çözülebilir.
Bu makalenin PDF sürümünü indirebilir ve alıntı notuna göre çevrimdışı amaçlar için kullanabilirsiniz. Lütfen PDF sürümünü buradan indirin. Özyineleme ve Yineleme Arasındaki Fark
1. Nokta, Öğreticiler. “Veri Yapıları ve Algoritmalar Özyineleme Temelleri.”, Tutorials Point, 15 Ağu. 2017. Buradan ulaşabilirsiniz
2.nareshtechnologies. “C İşlevlerinde Özyineleme | C Dil Eğitimi ”YouTube, YouTube, 12 Eylül 2016. Buradan ulaşabilirsiniz
3.yusuf shakeel. “Özyineleme Algoritması | Faktöriyel - adım adım kılavuz ”YouTube, YouTube, 14 Ekim 2013. Buradan ulaşabilirsiniz
1.'CPT-Özyineleme-Faktöriyel-Kod'Pulke tarafından - Commons Wikimedia üzerinden kendi çalışması, (Public Domain)
2. 'For-loop-diagram' Makinede okunabilir yazar sağlanmadı - Kendi çalışması varsayıldı. (CC BY-SA 2.5) Commons Wikimedia üzerinden