Rekursion bzw. rekursive Methoden

gaRRet
hi,
also zuerst mal bin ich totaler Anfänger in Java. Ich lerne gerade Java in der Schule...
Unser Lehrer hat gerade Rekursion eingeführt und ich hab das absolut nicht vestanden.

Was ich darüber weiss ist das rekursive Methoden sich irgendwie teilweise oder ganz enthalten. Es muss mind. eine Ausstiegsbedingung vorhanden sein und rekursive Methoden brauchen mehr Speicherplatz da die Variablen bei jeder Rekursionsstufe neu deklariert werden....

Mein Frage ist nun: Kann mir jemand rekursive Methoden bzw. Rekursion ein wenig näher bringen?
Ein Link wäre auch nicht schlecht... Ich hab zwar selbst auch danach gegoogelt aber ich finde irgendwie alles was gefunden habe zu schwierig erklärt....

wäre echt cool wenn mir da jemand weiterhelfen kann...
survivor
Zu Java speziell kann ich nichts sagen, aber hast du dir schonmal den Wikipedia-Artikel zur Rekursion durchgelesen?
http://de.wikipedia.org/wiki/Rekursion
gaRRet
Hab ich mir gerade durchgelesen, danke!
Allerdings muss ich ehrlich sagen fühl ich mich noch nicht wirklich erleuchtet....
Prophet
Also was ist Rekursion?

Wenn du dir eine Funktion schreibst kann diese Funktion sich selbst aufrufen.

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
function Func1(Arg1, Arg2)
{
   if(Arg1 >= 6)
      return Arg2;
   else
      Func1(Arg1 + 1, Arg2);
}
Func1(1, 6);


Überlege dir mal was da passiert dann weist du was rekursion ist. So einfach Augenzwinkern
gaRRet
hm naja...also ich weiss auch nicht.
Wenn arg1 <= 6 ist soll er arg 2 zurückgeben...versteh ich das richtig?
Das wär ja ne Endlosschleife
Prophet
ups war ein fehler drinne habe ihn nun korrigiert. aber hast du jetzt verstanden was rekursion ist? es bedeutet einfach nur das die function sich selber wieder aufruft.
gaRRet
JA danke! Ich denke ich habs kapiert....

Ich frage mich nur noch nach dem Sinn von rekursiven Funktionen...Sie brauchen ja für jede Rekursionstiefe neu reservierten Speicherplatz...

Naja wie auch immer...danke!
Prophet
Der Sinn?

Überlege die mal du willst alle Verzeichnisse eines PCs durchsuchen. Du weist also weder wie tief noch wie viele verzeichnisse es gibt. was macht man? eine rekursive funktion!

Das würde dann ungefähr so aussehen:
code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
function SearchDir($start)
{
   $files = list_all_files_in_dir($start);
   foreach($files as $file)
   {
      if(is_dir($file))
          SearchDir($start + $file + '/');
      else
          print $start + $file;
   }
}

SearchDir('root/');


Verstehst du? (Der Code ist eher schematisch gehalten und nicht wirklich java sondern eher php aber ich glaube die logik sollte rüberkommen)
gaRRet
Ja danke!
Sowas hab ich gesucht... (Ein Beispiel aus dem echten Leben)

Also sind rekursive Funktionen doch eine wichtige Sache...
Prophet
ja man kann die dinger ganz gut gebrauchen smile
gaRRet
kannst du mir dazu vielleicht ne kleine Übungsaufgabe geben?
So im Bereich Anfänger Niveau... wär voll cool!
daHooligan
erstelle eine liste über eine gegebene ordnerstruktur