Rekursion Java

Hallo.
Ich versuche gerade Java zu lernen und Java ist auch eine Insel is dabei mein roter Faden http://www.galileocomputing.de/openbook/javainsel6/

Ich verstehe leider aber nich warum

static void runter1( int n )
{
if ( n == 0 ) // Rekursionsende
return;

System.out.print( n + ", " );

runter1( n - 1 );
}

es hier static void heißt. Warum nicht static int?

Weil außerhalb dieses Unterprogramms keine Anweisung, Ausgabe auf dieses Unterprogramm zugreift?

Es könnte ja auch weiter oben eine System.out.println("…") Anweisung stehen die sich dem Unterprogramm bedient.
Also meine Vermutung is ja jetz dass kein Wert an das Hauptprogramm zurückgegeben wird, wenn das so wäre wäre das ja eine zahl (int).
Ist das plausibel oder liege ich falsch?

hi mike

wenn eine methode keinen wert zurückliefern soll, sollte man sie auch mit „void“, damit das auch wirklich klar ist. mit int zu arbeiten, obwohl nichts sinnvolles zurückgeliefert wird, verwirrt einfach nur.

in deinem beispiel zählt die methode einfach nur runter - sonst nix. es gibt nicht wirklich einen sinnvollen wert, den die methode an die aufrufende methode zurückliefern könnte.

natürlich wird man die methode anders definieren, falls innerhalb der methode irgendwas errechnet wird, dass den aufrufer interessiert. ob das nun ein int oder ein long oder irgendein objekt ist, kommt eben auf die aufgabestellung an - so allgemein kann man das nicht sagen.

das beispiel gibt einfach nicht viel her - soll ja auch nur die rekursionen an sich verdeutlichen. hier nach sinnhaftigkeit zu fragen ist sowieso sinnlos, da in diesem speziellen beispiel eine simple schleife viel effizienter wäre (methodenaufrufe kosten mehr zeit als sprungmarken in einer schleife).

lg
erwin