05.11.2013 Aufrufe

Iterative und Rekursive Algorithmen Iteration und Rekursion sind im ...

Iterative und Rekursive Algorithmen Iteration und Rekursion sind im ...

Iterative und Rekursive Algorithmen Iteration und Rekursion sind im ...

MEHR ANZEIGEN
WENIGER ANZEIGEN

Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.

YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.

© J. Rau Januar 2013<br />

Vergleich von <strong>Rekursion</strong> <strong>und</strong> <strong>Iteration</strong><br />

<strong>Iteration</strong> ist die Wiederholung<br />

strukturgleicher Blöcke durch Aneinanderreihung<br />

<strong>Rekursion</strong> ist die Wiederholung strukturgleicher<br />

Blöcke durch Schachtelung<br />

<strong>Iteration</strong> (Endrekursion):<br />

Man öffnet die größte Puppe, entn<strong>im</strong>mt die<br />

kleinere Puppe <strong>und</strong> setzt die beiden Teile der<br />

größeren Puppe wieder zusammen. Dies wiederholt<br />

man, bis die kleinste Puppe ausgepackt ist.<br />

Echte <strong>Rekursion</strong>:<br />

Man öffnet nacheinander jede Puppe, stellt deren 2<br />

Teile geöffnet ab <strong>und</strong> entn<strong>im</strong>mt die nächste Puppe.<br />

Wenn die kleinste Puppe entnommen wurde, setzt man<br />

die jeweiligen zwei Teile der größeren Puppen in<br />

umgekehrter Reihenfolge zusammen.<br />

<strong>Rekursive</strong> <strong>Algorithmen</strong> <strong>sind</strong> oft besonders gut zur Problemlösung geeignet, da<br />

(1) sie sehr mächtig <strong>und</strong> kompakt darstellbar <strong>sind</strong>,<br />

(2) sie sich relativ leicht finden lassen,<br />

(3) sich ihre Korrektheit relativ leicht zeigen lässt.<br />

Der Nachteil ist, dass rekursive <strong>Algorithmen</strong> evtl. viel Speicherplatz <strong>und</strong> Rechenzeit erfordern.<br />

Beispiele<br />

Berechnung des größten gemeinsamen Teilers zweier Zahlen (ggT)<br />

iterativer Algorithmus itggT(int m,int n):<br />

Speichere m <strong>und</strong> n unter den Namen x <strong>und</strong> y.<br />

Schritt 1: while ( x! = y), else { gehe zu Schritt 2};<br />

Schritt 2: if ( x > y) { x =(x-y) <strong>und</strong> gehe zu Schritt 1};<br />

if ( x < y) { y= (y-x) <strong>und</strong> gehe zu Schritt 1};<br />

{ liefere x als Ergebnis ab };<br />

Flussdiagramme für ggT in Java Beispiel ggT 84 <strong>und</strong> 30<br />

Minus<br />

Minus<br />

Minus<br />

Gleich

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!