Unterschied zwischen Rekursion und Iteration

Schlüsseldifferenz - Rekursion gegen Iteration
 

Rekursion und Iteration können zur Lösung von Programmierproblemen verwendet werden. Der Lösungsweg für das Problem mithilfe von Rekursion oder Iteration hängt von der Art und Weise des Problems ab. Das Hauptunterschied zwischen Rekursion und Iteration ist das Rekursion ist ein Mechanismus, um eine Funktion innerhalb der gleichen Funktion aufzurufen, während durch Wiederholung ein Satz von Anweisungen wiederholt ausgeführt wird, bis die angegebene Bedingung erfüllt ist. Rekursion und Iteration sind wichtige Techniken zur Entwicklung von Algorithmen und zum Erstellen von Softwareanwendungen.

INHALT

1. Übersicht und Schlüsseldifferenz
2. Was ist Rekursion?
3. Was ist Iteration?
4. Ähnlichkeiten zwischen Rekursion und Iteration
5. Side-by-Side-Vergleich - Rekursion vs. Iteration in Tabellenform
6. Zusammenfassung

Was ist Rekursion??

Wenn sich eine Funktion innerhalb der Funktion aufruft, spricht man von Rekursion. Es gibt zwei Arten der Rekursion. Sie sind endliche Rekursion und unendliche Rekursion. Endliche Rekursion hat eine Beendigungsbedingung. Unendliche Rekursion hat keine abschließende Bedingung.

Rekursion kann mit dem Programm zur Berechnung von Fakultäten erklärt werden.

n! = n * (n-1) !, wenn n> 0 ist

n! = 1, wenn n = 0 ist;

Beziehen Sie sich auf den untenstehenden Code, um die Fakultät 3 zu berechnen (3! = 3 * 2 * 1)..

intmain ()

ganzer Wert = Fakultät (3);

printf ("Factorial ist% d \ n", Wert);

0 zurückgeben;

intaktaktuell (intn)

if (n == 0)

Rückkehr 1;

sonstiges

Rückgabe n * -Faktor (n-1);

Beim Aufruf von Fakultät (3) ruft diese Funktion Fakultät (2) auf. Wenn Sie die Fakultät (2) aufrufen, wird diese Funktion die Fakultät (1) aufrufen. Dann wird die Fakultät (1) die Fakultät (0) aufrufen. Fakultät (0) gibt 1 zurück. In dem obigen Programm ist die Bedingung n == 0 im Block "wenn Block" die Basisbedingung. Entsprechend wird auch die Fakultätsfunktion immer wieder aufgerufen.

Rekursive Funktionen beziehen sich auf den Stack. In C kann das Hauptprogramm viele Funktionen haben. Main () ist also die aufrufende Funktion, und die vom Hauptprogramm aufgerufene Funktion ist die aufgerufene Funktion. Wenn die Funktion aufgerufen wird, wird die Steuerung an die aufgerufene Funktion übergeben. Nachdem die Funktionsausführung abgeschlossen ist, kehrt die Steuerung zum Hauptmenü zurück. Dann geht das Hauptprogramm weiter. Es erstellt also einen Aktivierungsdatensatz oder einen Stapelrahmen, um die Ausführung fortzusetzen.

Abbildung 01: Rekursion

Beim Aufrufen von factorial (3) von main aus erstellt es im obigen Programm einen Aktivierungsdatensatz im Aufrufstapel. Dann wird ein faktorieller (2) Stapelrahmen auf dem Stapel usw. erstellt. Der Aktivierungsdatensatz enthält Informationen zu lokalen Variablen usw. Bei jedem Aufruf der Funktion wird ein neuer Satz lokaler Variablen auf der Oberseite des Stapels erstellt. Diese Stack-Frames können die Geschwindigkeit verlangsamen. In der Rekursion ruft sich eine Funktion ebenfalls auf. Die zeitliche Komplexität einer rekursiven Funktion wird durch die Anzahl der Aufrufe der Funktion ermittelt. Die zeitliche Komplexität für einen Funktionsaufruf beträgt O (1). Für n rekursive Aufrufe ist die zeitliche Komplexität O (n)..

Was ist Iteration??

Iteration ist ein Anweisungsblock, der sich immer wieder wiederholt, bis die angegebene Bedingung erfüllt ist. Die Iteration kann mit „for-Schleife“, „do-while-Schleife“ oder „while-Schleife“ erreicht werden. Die for-Schleife-Syntax lautet wie folgt.

for (Initialisierung; Bedingung; ändern)

// Anweisungen;

Abbildung 02: „für Flussdiagramm der Schleife“

Der Initialisierungsschritt wird zuerst ausgeführt. In diesem Schritt werden Schleifensteuervariablen deklariert und initialisiert. Wenn die Bedingung erfüllt ist, werden die Anweisungen in den geschweiften Klammern ausgeführt. Diese Anweisungen werden ausgeführt, bis die Bedingung erfüllt ist. Wenn die Bedingung falsch ist, geht die Steuerung zur nächsten Anweisung nach der "for-Schleife". Nachdem die Anweisungen innerhalb der Schleife ausgeführt wurden, wechselt das Steuerelement in den Abschnitt zum Ändern. Es ist die Aktualisierung der Schleifensteuervariable. Dann wird die Bedingung erneut geprüft. Wenn die Bedingung erfüllt ist, werden die Anweisungen in den geschweiften Klammern ausgeführt. Auf diese Weise iteriert die "for-Schleife".

In "while-Schleife", Die Anweisungen innerhalb der Schleife werden ausgeführt, bis die Bedingung erfüllt ist.

while (Bedingung)

// Anweisungen

In der "do-while" -Schleife, Die Bedingung wird am Ende der Schleife überprüft. Die Schleife wird also mindestens einmal ausgeführt.

tun

// Anweisungen

while (Bedingung)

Das Programm zum Finden der Fakultät 3 (3!) Mittels Iteration ("for-Schleife") sieht wie folgt aus.

int main ()

intn = 3, Fakultät = 1;

inti;

für (i = 1; i<=n ; i++)

Fakultät = Fakultät * i;

printf ("Fakultät ist% d \ n", Fakultät);

0 zurückgeben;

Was sind die Ähnlichkeiten zwischen Rekursion und Iteration??

  • Beides sind Techniken, um ein Problem zu lösen.
  • Die Aufgabe kann entweder in Rekursion oder Iteration gelöst werden.

Was ist der Unterschied zwischen Rekursion und Iteration??

Rekursion vs. Iteration

Rekursion ist eine Methode zum Aufrufen einer Funktion innerhalb derselben Funktion. Iteration ist ein Anweisungsblock, der sich wiederholt, bis die angegebene Bedingung erfüllt ist.
Raumkomplexität
Die Platzkomplexität von rekursiven Programmen ist höher als bei Iterationen. Die Komplexität des Platzes ist bei Iterationen geringer.
Geschwindigkeit
Rekursionsausführung ist langsam. Normalerweise ist die Iteration schneller als die Rekursion.
Bedingung
Wenn keine Beendigungsbedingung vorliegt, kann es zu einer unendlichen Rekursion kommen. Wenn die Bedingung niemals falsch wird, wird es eine unendliche Wiederholung sein.
Stapel
In Rekursion wird der Stapel verwendet, um lokale Variablen zu speichern, wenn die Funktion aufgerufen wird. In einer Iteration wird der Stapel nicht verwendet.
Lesbarkeit des Codes
Ein rekursives Programm ist besser lesbar. Das iterative Programm ist schwerer zu lesen als ein rekursives Programm.

Zusammenfassung - Rekursion gegen Iteration

In diesem Artikel wurde der Unterschied zwischen Rekursion und Iteration beschrieben. Beide können zur Lösung von Programmierproblemen verwendet werden. Der Unterschied zwischen Rekursion und Iteration besteht darin, dass Rekursion ein Mechanismus ist, um eine Funktion innerhalb derselben Funktion aufzurufen und zu wiederholen, um einen Satz von Anweisungen wiederholt auszuführen, bis die angegebene Bedingung erfüllt ist. Wenn ein Problem in rekursiver Form gelöst werden kann, kann es auch durch Iterationen gelöst werden.

Laden Sie die PDF-Version von Rekursion vs. Iteration herunter

Sie können die PDF-Version dieses Artikels herunterladen und gemäß dem Zitiervermerk für Offline-Zwecke verwenden. Laden Sie die PDF-Version hier herunter. Unterschied zwischen Rekursion und Iteration

Referenz:

1.Point, Tutorials. "Datenstrukturen und Algorithmen - Rekursionsgrundlagen.", Tutorials Punkt, 15. August 2017. Hier verfügbar 
2.nährtechnologien. „Rekursion in C-Funktionen | C Language Tutorial ”YouTube, YouTube, 12. September 2016.  Hier verfügbar  
3.yusuf shakeel. Rekursionsalgorithmus | Factorial - Schritt für Schritt Anleitung ”YouTube, YouTube, 14. Oktober 2013.  Hier verfügbar  

Bildhöflichkeit:

1.'CPT-Recursion-Factorial-Code 'By Pluke - Eigene Arbeit, (Public Domain) via Commons Wikimedia 
2.'For-Loop-Diagramm'By Kein maschinenlesbarer Autor angegeben - Eigene Arbeit vorausgesetzt. (CC BY-SA 2.5) über Commons Wikimedia