PDA

View Full Version : [FRAGE] - rekursiver Aufruf


iamdog
06-11-2007, 18:10
Hallo!

Wenn ich mir beispielsweise den Merg-Sort ansehe, sind 2 rekursive Aufrufe dabei.
Ich verstehe nun nicht ganz, wie ich damit umgehen soll.
Wird zuerst der ganze Algorighmus einmal durchgemacht, also zB Merge-Sort wird zusätzlich 2 x aufgerufen oder wird zuerst beim ersten rekursiven Merge-Sort-Aufruf dieser 'durchgemacht'. Ich weiß, das könnte unter Umständen schwer verständlich sein, ich hoffe dennoch, dass jemand weiß, was ich meine.

Die Frage bezieht sich auch nicht im Speziellen auf Merge-Sort sondern eher auf allgemein rekursive Algorithmen.

lg

Erklärbär
06-11-2007, 18:27
auf wikipedia ist der algorithmus ziemlich gut erklärt: http://de.wikipedia.org/wiki/Mergesort

vielleicht hilfts dir weiter, wenn du die einzelnen funktionsaufrufe aufschreibst:

mergesort('test')
merge(mergesort('te'), mergesort('st'))
merge(merge(mergesort('t'), mergesort('e')), mergesort('st'))
merge(merge('t', mergesort('e')), mergesort('st'))
merge(merge('t', 'e'), mergesort('st'))
merge('et', merge(mergesort('s'), mergesort('t')))
merge('et', merge('s', mergesort('t')))
merge('et', merge('s', 't'))
merge('et', 'st')
'estt'

0110
06-11-2007, 18:40
Hallo!

Wenn ich mir beispielsweise den Merg-Sort ansehe, sind 2 rekursive Aufrufe dabei.
Ich verstehe nun nicht ganz, wie ich damit umgehen soll.
Wird zuerst der ganze Algorighmus einmal durchgemacht, also zB Merge-Sort wird zusätzlich 2 x aufgerufen oder wird zuerst beim ersten rekursiven Merge-Sort-Aufruf dieser 'durchgemacht'. Ich weiß, das könnte unter Umständen schwer verständlich sein, ich hoffe dennoch, dass jemand weiß, was ich meine.

Die Frage bezieht sich auch nicht im Speziellen auf Merge-Sort sondern eher auf allgemein rekursive Algorithmen.

lg

naja ich kanns dir mal in eigenen worten erklären! ein kurzes beispiel: rekursiv: ausgabe(0); void ausgabe(int i) { System.out.println(i); if(i < 10 ) ausgabe (i+1); } das gleiche nicht rekursiv gelöst: [code] void ausgabe() { int i=0; for(i=0;i