Unterschied Zwischen Rekursion Und Iteration

Inhaltsverzeichnis:

Unterschied Zwischen Rekursion Und Iteration
Unterschied Zwischen Rekursion Und Iteration

Video: Unterschied Zwischen Rekursion Und Iteration

Video: Unterschied Zwischen Rekursion Und Iteration
Video: 12.02.2 Iteration und Rekursion 2024, November
Anonim

Hauptunterschied - Rekursion vs. Iteration

Rekursion und Iteration können verwendet werden, um Programmierprobleme zu lösen. Der Ansatz zur Lösung des Problems mithilfe von Rekursion oder Iteration hängt von der Art und Weise ab, wie das Problem gelöst wird. Der Hauptunterschied zwischen Rekursion und Iteration besteht darin, dass Rekursion ein Mechanismus ist, um eine Funktion innerhalb derselben Funktion aufzurufen, während die Iteration einen Befehlssatz wiederholt ausführt, bis die gegebene Bedingung erfüllt ist. Rekursion und Iteration sind wichtige Techniken zur Entwicklung von Algorithmen und zum Erstellen von Softwareanwendungen.

INHALT

1. Überblick und Hauptunterschied

2. Was ist Rekursion

3. Was ist Iteration

4. Ähnlichkeiten zwischen Rekursion und Iteration

5. Nebeneinander-Vergleich - Rekursion gegen Iteration in tabellarischer Form

6. Zusammenfassung

Was ist Rekursion?

Wenn sich eine Funktion innerhalb der Funktion aufruft, wird sie als Rekursion bezeichnet. Es gibt zwei Arten der Rekursion. Sie sind endliche Rekursion und unendliche Rekursion. Die endliche Rekursion hat eine Abschlussbedingung. Unendliche Rekursion hat keine Abschlussbedingung.

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

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

n! = 1, wenn n = 0;

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

intmain () {

int value = Fakultät (3);

printf ("Faktor ist% d / n", Wert);

return 0;

}}

intfactorial (intn) {

if (n == 0) {

return 1;

}}

sonst {

Rückgabe n * Fakultät (n-1);

}}

}}

Wenn Sie Fakultät (3) aufrufen, ruft diese Funktion Fakultät (2) auf. Wenn Sie Fakultät (2) aufrufen, ruft diese Funktion Fakultät (1) auf. Dann ruft Fakultät (1) Fakultät (0) auf. Fakultät (0) gibt 1 zurück. Im obigen Programm ist die Bedingung n == 0 im "if-Block" die Grundbedingung. Entsprechend wird die Fakultätsfunktion immer wieder aufgerufen.

Rekursive Funktionen beziehen sich auf den Stapel. 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. Nach Abschluss der Funktionsausführung wird die Steuerung an main zurückgegeben. Dann geht das Hauptprogramm weiter. Daher wird ein Aktivierungsdatensatz oder ein Stapelrahmen erstellt, um die Ausführung fortzusetzen.

Unterschied zwischen Rekursion und Iteration
Unterschied zwischen Rekursion und Iteration

Abbildung 01: Rekursion

Im obigen Programm wird beim Aufruf von Fakultät (3) von main ein Aktivierungsdatensatz im Aufrufstapel erstellt. Dann wird ein faktorieller (2) Stapelrahmen über dem Stapel usw. erstellt. Der Aktivierungsdatensatz enthält Informationen zu lokalen Variablen usw. Bei jedem Aufruf der Funktion wird oben im Stapel ein neuer Satz lokaler Variablen erstellt. Diese Stapelrahmen können die Geschwindigkeit verlangsamen. Ebenso ruft sich bei der Rekursion eine Funktion auf. Die zeitliche Komplexität für eine rekursive Funktion ergibt sich aus der Häufigkeit, mit der die Funktion aufgerufen wird. Die zeitliche Komplexität für einen Funktionsaufruf beträgt O (1). Für n Anzahl rekursiver Aufrufe beträgt die Zeitkomplexität O (n).

Was ist Iteration?

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

für (Initialisierung; Bedingung; Ändern) {

// Anweisungen;

}}

Hauptunterschied zwischen Rekursion und Iteration
Hauptunterschied zwischen Rekursion und Iteration

Abbildung 02: „für Schleifenflussdiagramm“

Der Initialisierungsschritt wird zuerst ausgeführt. Dieser Schritt besteht darin, Regelungsvariablen zu deklarieren und zu initialisieren. Wenn die Bedingung erfüllt ist, werden die Anweisungen in geschweiften Klammern ausgeführt. Diese Anweisungen werden ausgeführt, bis die Bedingung erfüllt ist. Wenn die Bedingung falsch ist, geht das Steuerelement zur nächsten Anweisung nach der "for-Schleife". Nach dem Ausführen der Anweisungen innerhalb der Schleife wechselt das Steuerelement zum Ändern des Abschnitts. Es dient zum Aktualisieren der Regelungsvariablen. Dann wird der Zustand erneut überprüft. Wenn die Bedingung erfüllt ist, werden die Anweisungen in geschweiften Klammern ausgeführt. Auf diese Weise iteriert die "for-Schleife".

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

while (Bedingung) {

// Anweisungen

}}

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

tun{

// Anweisungen

} while (Bedingung)

Das Programm zum Ermitteln der Fakultät von 3 (3!) Mithilfe der Iteration ("for loop") lautet wie folgt.

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);

return 0;

}}

Was sind die Ähnlichkeiten zwischen Rekursion und Iteration?

  • Beides sind Techniken zur Lösung eines Problems.
  • Die Aufgabe kann entweder in Rekursion oder Iteration gelöst werden.

Was ist der Unterschied zwischen Rekursion und Iteration?

Diff Artikel Mitte vor Tabelle

Rekursion gegen Iteration

Rekursion ist eine Methode zum Aufrufen einer Funktion innerhalb derselben Funktion. Die Iteration ist ein Anweisungsblock, der wiederholt wird, bis die angegebene Bedingung erfüllt ist.
Raumkomplexität
Die räumliche Komplexität rekursiver Programme ist höher als bei Iterationen. Die Raumkomplexität ist bei Iterationen geringer.
Geschwindigkeit
Die 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, handelt es sich um eine unendliche Iteration.
Stapel
Bei der 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 vs Iteration

In diesem Artikel wurde der Unterschied zwischen Rekursion und Iteration erläutert. 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 iterieren, um eine Reihe von Anweisungen wiederholt auszuführen, bis die gegebene Bedingung erfüllt ist. Wenn ein Problem in rekursiver Form gelöst werden kann, kann es auch mithilfe von Iterationen gelöst werden.

Laden Sie die PDF-Version von Recursion vs Iteration herunter

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

Empfohlen: