Unterschied zwischen Rekursion und Iteration

Unterschied zwischen Rekursion und Iteration

Schlüsselunterschied - Rekursion vs Iteration
 

Rekursion und Iteration können verwendet werden, um Programmierprobleme zu lösen. Der Ansatz zur Lösung des Problems unter Verwendung von Rekursion oder Iteration hängt von dem Weg zur Lösung des Problems ab. Der Schlüsselunterschied Zwischen Rekursion und Iteration ist das Rekursion ist ein Mechanismus, um eine Funktion innerhalb derselben Funktion aufzurufen, während die Iteration eine Reihe von Anweisungen wiederholt ausführen soll, bis die angegebene Bedingung wahr ist. Rekursion und Iteration sind wichtige Techniken zur Entwicklung von Algorithmen und zum Erstellen von Softwareanwendungen.

INHALT

1. Überblick und wichtiger Unterschied
2. Was ist Rekursion
3. Was ist Iteration
4. Ähnlichkeiten zwischen Rekursion und Iteration
5. Seite für Seitenvergleich - 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 von Rekursion. Sie sind endliche Rekursion und unendliche Rekursion. Endliche Rekursion hat eine Kündigungsbedingung. Unendliche Rekursion hat keine Kündigungsbedingung.

Rekursion kann mit dem Programm erklärt werden, um Faktorien zu berechnen.

N! = n * (n-1)!, Wenn n> 0

N! = 1, wenn n = 0;

Verweisen Sie den Bellow -Code, um die Faktorial von 3 (3) zu berechnen (3!= 3*2*1).

intmain ()

int value = factorial (3);

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

Rückkehr 0;

intfactorial (intn)

if (n == 0)

Rückkehr 1;

anders

return n* factorial (n-1);

Wenn diese Funktion faktorial (3) anruft (2), wird diese Funktion aufgerufen (2). Wenn diese Funktion faktorial (2) aufruft, wird (1) diese Funktion nennt. Dann wird Faktor (1) faktorial (0) anrufen. Faktorial (0) kehrt 1 zurück. Im obigen Programm ist n == 0 Bedingung im "If Block" die Basiszustand. Nach Ansicht der faktoriellen Funktion wird immer wieder aufgerufen.

Rekursive Funktionen hängen mit dem Stapel zusammen. In C kann das Hauptprogramm viele Funktionen haben. Main () ist also die Aufruffunktion, und die Funktion, die vom Hauptprogramm aufgerufen wird. Wenn die Funktion aufgerufen wird, wird die Steuerung der aufgerufenen Funktion gegeben. Nach Abschluss der Funktionsausführung wird die Steuerung an Main zurückgegeben. Dann geht das Hauptprogramm weiter. Es erstellt also einen Aktivierungsdatensatz oder einen Stack -Frame, um die Ausführung fortzusetzen.

Abbildung 01: Rekursion

Wenn Sie im obigen Programm (3) von Main anrufen, werden im Anrufstapel ein Aktivierungsdatensatz erstellt. Dann wird der Faktor (2) Stapelrahmen oben im Stapel usw. erstellt. Der Aktivierungsdatensatz hält Informationen zu lokalen Variablen usw. Jedes Mal, wenn die Funktion aufgerufen wird. Diese Stapelrahmen können die Geschwindigkeit verlangsamen. Ebenso ruft sich eine Funktion in der Rekursion auf. Die Zeitkomplexität für eine rekursive Funktion wird von der Häufigkeit festgestellt, die Funktion wird aufgerufen.  Zeitkomplexität für einen Funktionsaufruf ist o (1). Für n Anzahl rekursiver Anrufe ist die Zeitkomplexität O (n).

Was ist Iteration?

Iteration ist ein Anweisungsblock, der sich immer wieder wiederholt, bis die gegebene Bedingung wahr ist. Die Iteration kann mit "für Loop", "Do-while-Loop" oder "während der Schleife" erreicht werden. Die Syntax für Schleifen ist wie folgt.

für (Initialisierung; Bedingung; modify)

// Aussagen;

Abbildung 02: "Für Schleifenflussdiagramm"

Initialisierungsschritt wird zuerst ausgeführt. Dieser Schritt soll Schleifensteuervariablen deklarieren und initialisieren. Wenn die Bedingung wahr ist, werden die Aussagen in den lockigen Klammern ausgeführt. Diese Aussagen werden ausgeführt, bis die Bedingung wahr ist. Wenn die Bedingung falsch ist, geht die Steuerung nach der „für Schleife“ zur nächsten Anweisung. Nach der Ausführung der Anweisungen innerhalb der Schleife wird der Steuerelement geändert, um den Abschnitt zu ändern. Es soll die Schleifensteuervariable aktualisieren. Dann wird der Zustand erneut überprüft. Wenn die Bedingung wahr ist, werden die Aussagen in den lockigen Klammern ausgeführt. Auf diese Weise iteriert das „für Schleifen“.

In "während der Schleife", Die Aussagen innerhalb der Schleife werden ausgeführt, bis die Bedingung wahr ist.

while (Bedingung)

// Aussagen

In "do-while" -Schloop, Der Zustand wird am Ende der Schleife überprüft. Die Schleife führt also mindestens einmal aus.

Tun

// Aussagen

while (Bedingung)

Programm zur Suche nach dem Faktor von 3 (3 (3)!) Die Verwendung der Iteration („für Schleife“) ist wie folgt.

int main ()

intn = 3, faktorial = 1;

inti;

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

factorial = factorial *i;

printf („Fakultät ist %d \ n“, faktorial);

Rückkehr 0;

Was sind die Ähnlichkeiten zwischen Rekursion und Iteration?

  • Beide 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 gegen Iteration

Rekursion ist eine Methode zum Aufrufen einer Funktion innerhalb derselben Funktion. Iteration ist ein Anweisungsblock, der sich wiederholt, bis die angegebene Bedingung wahr ist.
Raumkomplexität
Die Raumkomplexität rekursiver Programme ist höher als Iterationen. Die Raumkomplexität ist bei Iterationen niedriger.
Geschwindigkeit
Rekursionsausführung ist langsam. Normalerweise ist die Iteration schneller als Rekursion.
Zustand
Wenn es keine Kündigungsbedingung gibt, kann es eine unendliche Rekursion geben. Wenn die Erkrankung niemals falsch wird, wird sie eine unendliche Iteration sein.
Stapel
In der Rekursion wird der Stapel verwendet, um lokale Variablen zu speichern, wenn die Funktion aufgerufen wird. In einer Iteration wird der Stapel nicht verwendet.
Code -Lesbarkeit
Ein rekursives Programm ist lesbarer. 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 erörtert. Beide können verwendet werden, um Programmierprobleme zu lösen. Der Unterschied zwischen Rekursion und Iteration besteht darin, dass Rekursion ein Mechanismus ist, um eine Funktion innerhalb derselben Funktion aufzurufen und eine Reihe von Anweisungen wiederholt auszuführen, bis die gegebene Bedingung wahr ist. Wenn ein Problem in rekursiver Form gelöst werden kann, kann es auch mit Iterationen gelöst werden.

Laden Sie die PDF -Version von Recursion VS Iteration herunter

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

Referenz:

1.Punkt, Tutorials. „Datenstrukturen und Algorithmen Rekursion Grundlagen.”, Tutorials Punkt, 15. August. 2017. Hier verfügbar 
2.Nareshtechnologies. „Rekursion in C -Funktionen | C Sprach -Tutorial “YouTube, YouTube, 12. September. 2016.  Hier verfügbar  
3.Yusuf Shakeel. „Rekursionsalgorithmus | Faktororial - Schritt für Schritt Anleitung “YouTube, YouTube, 14. Oktober. 2013.  Hier verfügbar  

Bild mit freundlicher Genehmigung:

1.'CPT-Recursion-Faktorial-Code'By PLUke-eigene Arbeit, (Public Domain) über Commons Wikimedia 
2.'For-Loop-diagram'By Kein maschinenlesbarer Autor-eigene Arbeit angenommen. (CC BY-SA 2.5) über Commons Wikimedia