Iterativ <-> Rekursiv in Java

Status
Nicht offen für weitere Antworten.
I

iterarek

Gast
Hallo,


kann jemand mir den Unterschied zwischen Rekursiv und Iterativ (explizit in Java) erklären?

Mit ist die Praxis nicht klar. Woran erkenne ich ob ein Programm iterativ ist oder Rekursiv.
Ich habe gelsen, dass iterativ meistens (oder immer?) eine Schleife hat.

Ist das das einzige Erkennungsmerkmal?
 

SnooP

Top Contributor
Eine Rekursion spielt sich immer innerhalb einer Methode ab (oder auch übere mehrere). Das Erkennungsmerkmal ist, dass innerhalb der Methode diese sich selbst wieder aufruft, z.B. Methode doSomething(int x) hat irgendwo in ihrem Rumpf den Aufruf: doSomething(17); ... dadurch hat man die Möglichkeit quasi eine Art Schleife oder Iteration zu erzeugen.. es wird also ein Codeteil mehrfach ausgeführt... zumeist ändert sich der Parameter (die 17) für den rekursiven Aufruf immer, so dass irgendwann ein Wert erreicht wird, bei dem die Rekursion abgebrochen werden kann (Abbruchbedingung)... hat die rekursive Methode einen Rückgabewert, dann steht vor dem rekursiven Aufruf noch ein return doSomething() damit am Ende alle Ergebnisse, also alle Rückgabewerte entsprechend zusammengebaut zurückgegeben werden können...
Iterativ verzichtet auf diese rekursiven Aufrufe und man hat als Iterationsmöglichkeiten alle Arten von Schleifen: for, while, do. Allerdings können beide Möglichkeiten auch kombiniert werden, es spricht also nix dagegen innerhalb einer rekursiven Methode eine for-Schleife zu verwenden... - sprich, du musst in einem Programm nur die rekursiven Aufrufe finden, um festzustellen, ist das jetzt rekursiv oder nicht...
und zusätzlich muss man noch bedenken: rekursiv geht schiev ;)
 

Leroy42

Top Contributor
Iterative Funktionen berechnen etwas in einer Schleife.
Rekursive Funktionen berechnen etwas berechnen etwas durch Aufruf
von sich selbst (direkt oder über eine andere Funktion).


Standardbeispiel ist die Fakultätsfunktion:

Code:
Iterativ:
fakIter(n) := produkt(i=1, n, i);

Rekursiv:
fakRek(n) := 1 für n=0
fakRek(n) := n*fakRek(n-1) für n>0

int fakIter(int n) {
  int fak = 1;
  for (int i = 1; i <= n; i++)
    fak := fak * i;
  return fak;
}

int fakRek(int n) {
  if (n==0)
    return 1;
  else
    return n*fak(n-1);
}
 

Leroy42

Top Contributor
SnooP hat gesagt.:
rekursiv geht schiev ;)
Das kann man nun wirklich nicht so stehen lassen, obwohl es ein nettes Wortspiel ist.
Sauber analysiert und gecodet geht nix schief.

(Hoffentlich ruft keiner meine fakRek-Funktion mit einem negativen Wert auf)
 

SnooP

Top Contributor
das war auch nur nen lustiger Spruch aus den Anfängen meines Studiums... häufig haben gerade Anfänger ihre Probleme mit Rekursionen und stackOverflows etc. - daher der Spruch - natürlich ist der nicht in gänze ernst gemeint ;)

Denn eigentlich: To iterate is human - to recurse is divine ;)
 
I

iterarek

Gast
Hi!

Danke für eure vielen Antworten, ich glaube ich bin jetzt schon schlauer geworden was iterativ und rekursiv angeht. Schade dass einem das an der Uni nicht so ausführlich erläutert wird ;)
 

byte

Top Contributor
iterarek hat gesagt.:
Danke für eure vielen Antworten, ich glaube ich bin jetzt schon schlauer geworden was iterativ und rekursiv angeht. Schade dass einem das an der Uni nicht so ausführlich erläutert wird ;)

An der Uni wird Dir halt nicht alles vorgekaut wie in der Schule. Da musste im Zweifelsfall auch mal selbst nachschlagen. ;)
 

AlArenal

Top Contributor
byto hat gesagt.:
iterarek hat gesagt.:
Danke für eure vielen Antworten, ich glaube ich bin jetzt schon schlauer geworden was iterativ und rekursiv angeht. Schade dass einem das an der Uni nicht so ausführlich erläutert wird ;)

An der Uni wird Dir halt nicht alles vorgekaut wie in der Schule. Da musste im Zweifelsfall auch mal selbst nachschlagen. ;)

Richtig. Eine der Hautpaufgaben eines Studenten ist es, Lernen zu lernen.
 

SnooP

Top Contributor
AlArenal hat gesagt.:
Richtig. Eine der Hautpaufgaben eines Studenten ist es, Lernen zu lernen.
und schade eigentlich, dass das einem nicht schon in der Schule beigebracht wird... aber nein - das meiste was man da lernt ist Schwachsinn ;)
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
S java rekursiv iterativ hilfee :s Java Basics - Anfänger-Themen 5
J Java Rekursiv vs(zu) Iterativ Hilfe Java Basics - Anfänger-Themen 3
jhCDtGVjcZGcfzug Fibonacci Zahlen rekursiv und iterativ Java Basics - Anfänger-Themen 21
G Primzahlen von Rekursiv nach Iterativ Java Basics - Anfänger-Themen 6
F Iterativ in Rekursiv Java Basics - Anfänger-Themen 2
E Binärbaum - von rekursiv zu iterativ Java Basics - Anfänger-Themen 10
P Hanoi rekursiv zu iterativ umbauen Java Basics - Anfänger-Themen 20
W Binomialkoeffizient iterativ/rekursiv Java Basics - Anfänger-Themen 2
F Sortieralgorithmus von rekursiv auf iterativ? Java Basics - Anfänger-Themen 21
N Fibo Zahlen:iterativ,rekursiv Anzahl der Additionen zählen Java Basics - Anfänger-Themen 2
B von rekursiv zu iterativ Java Basics - Anfänger-Themen 6
wuerg Türme von Hanoi Iterativ Java Basics - Anfänger-Themen 8
R Iterativ zeichnen Java Basics - Anfänger-Themen 1
F Alle Zeichenkombinationen eines Strings iterativ herausfinden Java Basics - Anfänger-Themen 26
I MergeSort iterativ mit Stacks Java Basics - Anfänger-Themen 13
A Rekursion Funktion in eine Iterativ Funktion umwandeln Java Basics - Anfänger-Themen 9
M Werte der Knoten in Binärbaum addieren (iterativ) Java Basics - Anfänger-Themen 6
T Methoden Fibunacci Iterativ Java Basics - Anfänger-Themen 6
H Suchbaum iterativ absteigen? Java Basics - Anfänger-Themen 3
P QuickSort iterativ Java Basics - Anfänger-Themen 5
M Rekursion Iterativ ausdrücken Java Basics - Anfänger-Themen 3
B Begriff Iterativ Java Basics - Anfänger-Themen 2
X Türme von Hanoi - Iterativ Java Basics - Anfänger-Themen 8
T funktion iterativ Java Basics - Anfänger-Themen 4
F MergeSort iterativ mit Hilfe von Stack Java Basics - Anfänger-Themen 5
H Passwort Brute Force rekursiv Java Basics - Anfänger-Themen 7
1 Array rekursiv durchlaufen Java Basics - Anfänger-Themen 8
E Rekursiv Objekte erzeugen - geht das? Java Basics - Anfänger-Themen 2
Cassy3 Binäre Bäume Rekursiv durchlaufen und bestimmte Elemente Zählen Java Basics - Anfänger-Themen 6
R0m1lly Kombinationen aus int array rekursiv Java Basics - Anfänger-Themen 2
L Rekursiv gegebenes Passwort herausfinden. Java Basics - Anfänger-Themen 2
P9cman Char Index rekursiv finden Java Basics - Anfänger-Themen 4
B Methoden Rekursiv festellen, ob eine Zahl gerade-oft vorkommt oder nicht Java Basics - Anfänger-Themen 4
S Methoden Methodenaufruf rekursiv zählen Java Basics - Anfänger-Themen 4
B Array nach Wert prüfen rekursiv Java Basics - Anfänger-Themen 5
sashady Zahlen rekursiv zerlegen und Ziffern addieren Java Basics - Anfänger-Themen 38
H Binominalkoeffizient tail-rekursiv in java darstellen Java Basics - Anfänger-Themen 0
GAZ Tribonacci Folge Rekursiv Java Basics - Anfänger-Themen 11
A Ackermmanfunktion rekursiv Java Basics - Anfänger-Themen 4
A Binärbaum rekursiv durchsuchen und Referenz zurückgeben Java Basics - Anfänger-Themen 4
H Rekursiv Methode ausführen bei Kindern Java Basics - Anfänger-Themen 12
G Methode Rekursiv umschreiben Java Basics - Anfänger-Themen 8
L Jede zweite Ziffer entfernen (rekursiv) Java Basics - Anfänger-Themen 6
J Dateien in Verzeichnissen rekursiv auflisten wirft Exception Java Basics - Anfänger-Themen 4
D Pentagonale Nummern in Rekursiv Java Basics - Anfänger-Themen 14
O Enum Array Rekursiv abarbeiten Java Basics - Anfänger-Themen 44
E Weg-Suche-Problem rekursiv Java Basics - Anfänger-Themen 12
O Primzahl rekursiv mit einem Wert ohne i, wie? Java Basics - Anfänger-Themen 6
E Erste Schritte Potenz Negativ (rekursiv) Java Basics - Anfänger-Themen 2
O Rekursiv aufrufen Java Basics - Anfänger-Themen 2
F In List Rekursiv suchen Java Basics - Anfänger-Themen 12
S Fibonacci Zahlen rekursiv Java Basics - Anfänger-Themen 1
L Rekursiv zwei Strings vergleichen Java Basics - Anfänger-Themen 3
B Fakultätsfunktion Rekursiv Berechnen aber mit Array Java Basics - Anfänger-Themen 10
J Fibonacci -Folge rekursiv berechnen Java Basics - Anfänger-Themen 18
B Wie kann ich Linien rekursiv zeichnen? Java Basics - Anfänger-Themen 4
kilopack15 Sin(x) rekursiv lösen Java Basics - Anfänger-Themen 17
T Rekursiv Tiefe eines binären Suchbaums ermitteln Java Basics - Anfänger-Themen 22
P Methoden Arrays.AsList kleinste Zahl ausgeben Rekursiv Java Basics - Anfänger-Themen 9
W A hoch N Rekursiv Java Basics - Anfänger-Themen 3
K Rechtecke rekursiv zeichnen Java Basics - Anfänger-Themen 20
V Quadrate rekursiv zeichnen Java Basics - Anfänger-Themen 7
M Fibonacci rekursiv mittels Cache Java Basics - Anfänger-Themen 17
Y Rekursiv Palindrom herausfinden Java Basics - Anfänger-Themen 5
B Fibonacci Zahlen rekursiv Array Java Basics - Anfänger-Themen 12
M String rekursiv Spiegeln mit Originalwort davor Java Basics - Anfänger-Themen 3
K Türme von Hanoi - Rekursiv. Java Basics - Anfänger-Themen 1
T MergeSort rekursiv programmieren Java Basics - Anfänger-Themen 8
M Zahlenpyramide rekursiv programmieren Java Basics - Anfänger-Themen 7
hello_autumn Potenz selber berechnen, Rekursiv. Java Basics - Anfänger-Themen 6
V Text wüerfeln-Rekursiv Java Basics - Anfänger-Themen 4
J Baum rekursiv durchlaufen Java Basics - Anfänger-Themen 2
D Münzverteilung Möglichkeiten | Rekursiv Java Basics - Anfänger-Themen 3
R Hanoi rekursiv lösen Problem Java Basics - Anfänger-Themen 1
D Rekursiv Kombinationen ausgeben klappt nur bei einer Wiederholung Java Basics - Anfänger-Themen 4
shiroX OOP String rekursiv zurückgeben Java Basics - Anfänger-Themen 6
Z Fibonacci rekursiv meine Erklärung stimmt so? Java Basics - Anfänger-Themen 2
E Erste Schritte Pi, rekursiv Java Basics - Anfänger-Themen 6
A Frage Methode ggt Rekursiv Java Basics - Anfänger-Themen 5
E Hanoi-Varianten rekursiv Java Basics - Anfänger-Themen 2
P Mittelwert rekursiv Java Basics - Anfänger-Themen 13
E Integral Rekursiv Java Basics - Anfänger-Themen 15
M MergeSort rekursiv Java Basics - Anfänger-Themen 2
D Ziffer in Zahl Rekursiv Java Basics - Anfänger-Themen 4
B Array rekursiv untersuchen Java Basics - Anfänger-Themen 21
I Rekursiv Java Basics - Anfänger-Themen 13
C Rekursiv Zahlenfolgen berechnen mit zwei Variablen Java Basics - Anfänger-Themen 5
K Rekursiv zu Literal Java Basics - Anfänger-Themen 12
R Verzeichnisse rekursiv nach Dateiduplikaten durchsuchen Java Basics - Anfänger-Themen 5
L File Tree rekursiv Java Basics - Anfänger-Themen 10
X Addition rekursiv ohne Schleife Java Basics - Anfänger-Themen 10
M Sudoku Rekursiv lösen Java Basics - Anfänger-Themen 9
E Datentypen ein java problem rekursiv loesen Java Basics - Anfänger-Themen 2
K indexOf selbst rekursiv definieren Java Basics - Anfänger-Themen 4
M Fibonacci-Linear und Rekursiv Java Basics - Anfänger-Themen 14
D preOrder, inOrder, postOrder rekursiv zusammensetzen aus String Java Basics - Anfänger-Themen 1
K Binomialkoeffizient rekursiv berechnen Java Basics - Anfänger-Themen 8
J eulersche rekursiv berechnen Java Basics - Anfänger-Themen 6
J Suchbaumeigenschaft rekursiv programmieren Java Basics - Anfänger-Themen 3
T Rekursiv Vokale zählen Java Basics - Anfänger-Themen 19

Ähnliche Java Themen

Neue Themen


Oben