Verstehe das Ergebnis nicht - bitte erklären

Status
Nicht offen für weitere Antworten.

Rudolf

Bekanntes Mitglied
Java:
public class Squared {

	static void down1( int n ) 
	{ 
	  if ( n <= 0 )   // Rekursionsende 
	    return; 
	 
	  System.out.print( n + ", " ); 
	 
	  down1( n - 1 ); 
	} 
	 
	static void down2( int n ) 
	{ 
	  if ( n <= 0 )   // Rekursionsende 
	    return; 
	 
	  down2( n - 1 ); 
	 
	  System.out.print( n + ", " ); 
	}
	
	public static void main(String[] args) 
	{
		  down2(10);
	} 

}

Verstehe net warum das Ergebnis von down2(10); 1,2,3,4,5,6,7,8,9,10 ist. Bitte detailiert erklären.
 
B

bygones

Gast
die funktion wird rekursiv aufgerufen... erst mit 10, dann 9, 8 etc
jeder aufruf bleibt bei
down2 stecken und kann erst das print ausfuehren wenn die rekursion zu ende ist
die letzte gueltige rekursion ist mit n = 1, da danach das Rekursionsende erfuellt ist.
dann koennen alle Rekursionen das print ausfuehren, angefangen von 1, dannn 2, 3 etc.

schlecht erklaert, aber vll hilfts
 

Michael...

Top Contributor
Na ja, was will man da grossartig erklären. Die Reihefolge der Ausgabe liegt daran, dass vor der Ausgabe von n die Methode rekursiv aufgerufen. Oder anders gesagt die Methode wird solange rekursiv aufgerufen bis n<=0 und erst dann erfolgt das System.out der jeweiligen Aufrufe in "umgekehrter" Reihenfolge
 

Marco13

Top Contributor
Schreib' dir in jede Methode als erste Zeile
System.out.println("Rufe jetzt [Methodenname] mit Parameter "+bla+" auf");
 

sliwalker

Top Contributor
Oder stell Dir die Rekusrion nicht mit Zahlen vor, sondern mit Verzeichnissen(Ordner).
Schreibst Du eine Methode die ein Verzeichnis rekursiv löschen soll, so werden doch Dateien im tiefsten Verzeichnis zuerst gelöscht, bevor er sich immer weiter nach oben arbeitet.
Schonmal gemacht? Dann sollte es klar sein.
 

Rudolf

Bekanntes Mitglied
Die Schleife fängt mit down2 ( 10 ) an.

d.h. n ist gleich 10.

dann wird überprüft ob n kleiner gleich 0 ist. wenn nein wird n um eins heruntergesetzt und die schleife beginnt von neuem.

so hat man ca. 10 durchläufe in denen n immer um eins heruntergesetzt wird. dann ist n gleich 0 und dann müsste nach meinem Verständnis die Schleife einfach beendet werden, da im if ein return; steht was für mich gleichbedeutend mit break; ist.
 
S

SlaterB

Gast
nur der 10. Methoden-Aufruf ist damit wirklich sofort beendet,
die vorherigen werden jeweils in Anschluss an Zeile 18 fortgeführt und da kommt als nächstes Zeile 19-20
 

Schandro

Top Contributor
dann ist n gleich 0 und dann müsste nach meinem Verständnis die Schleife einfach beendet werden, da im if ein return; steht was für mich gleichbedeutend mit break; ist.
Das hier ist ne Rekursion, keine Schleife!

Das return beendet die AKTUELLE Methode. Das heisst der Aufruf von down2 wird beendet, wo n==0 ist.
Dadurch geht der Aufruf von down2 wo n==1 ist weiter: System.out.println(1); wird aufgerufen, danach ist die Methode beendet da einfach das Methodenende erreicht ist.
Dadurch geht der Aufruf von down2 wo n==2 ist weiter: System.out.println(2); wird aufgerufen, danach ist die Methode beendet da einfach das Methodenende erreicht ist.
Dadurch geht der Aufruf von down2 wo n==3 ist weiter: System.out.println(3); wird aufgerufen, danach ist die Methode beendet da einfach das Methodenende erreicht ist.
...
Dadurch geht der Aufruf von down2 wo n==10 ist weiter: System.out.println(10); wird aufgerufen, danach ist die Methode beendet da einfach das Methodenende erreicht ist.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
K Verstehe Rekursion nicht ganz Java Basics - Anfänger-Themen 7
nbergmann x /= n : Verstehe ich nicht. Java Basics - Anfänger-Themen 24
S Schulaufgabe - verstehe leider die Aufgabe nicht Java Basics - Anfänger-Themen 4
ZH1896ZH Verstehe verschieden Scanner und hasNext() nicht ganz Java Basics - Anfänger-Themen 2
ZH1896ZH OOP Verstehe nicht was der Hinweis bedeutet, bitte um Hilfe! Java Basics - Anfänger-Themen 2
A Hilfe bei Rekursion,Ich verstehe nicht,wie funktioniert die Rekursion in der Methode "walk" Java Basics - Anfänger-Themen 13
A Shopping Cart Programm. Verstehe einige Zusammenhänge nicht Java Basics - Anfänger-Themen 1
T Brauche Hilfe um ein Programm zu verstehe Java Basics - Anfänger-Themen 4
K Erste Schritte Ich verstehe das Summenprogramm nicht Java Basics - Anfänger-Themen 10
S Ich verstehe die RegEx Tabelle von Javadoc nicht so ganz Java Basics - Anfänger-Themen 3
V Erste Schritte Array.length[x] in einer Schleife - ich verstehe das nicht Java Basics - Anfänger-Themen 1
Y Erste Schritte Ich verstehe this. nicht so richtig Java Basics - Anfänger-Themen 5
DaCrazyJavaExpert Methoden Verstehe Feheler nicht! Java Basics - Anfänger-Themen 7
Henri ich verstehe gerade nicht die Methode Java Basics - Anfänger-Themen 6
dave253 Ich verstehe folgenden Code nicht.. Java Basics - Anfänger-Themen 12
V Verstehe die Lösung einer Aufgabe von Grunkurs-Java nicht. Java Basics - Anfänger-Themen 11
J Verstehe die NullPointerException nicht Java Basics - Anfänger-Themen 1
J Verstehe meine HashSet Ausgabe nicht Java Basics - Anfänger-Themen 5
P Verstehe Lösung einer Aufgabe von "Grundkurs-Java" nicht Java Basics - Anfänger-Themen 5
O Ich verstehe nicht, was Eclipse von mir will Java Basics - Anfänger-Themen 10
G Methoden Verstehe nicht was in der Methode gemacht wird? Java Basics - Anfänger-Themen 5
M Verstehe das Programm(Quellcode) nicht!! Java Basics - Anfänger-Themen 12
B Verstehe ZufallInt = (int) (Math.random() * 5 + 1); nicht Java Basics - Anfänger-Themen 9
J Rekursiver Horner-Schema-Algorithmus - Verstehe ich ihn richtig? Java Basics - Anfänger-Themen 2
F verstehe diese Variable nicht... Java Basics - Anfänger-Themen 4
A Codezeile die ich nicht verstehe Java Basics - Anfänger-Themen 7
Pentalon Ein Aufruf den ich nicht verstehe Java Basics - Anfänger-Themen 11
V Verstehe die Logik nicht ... Java Basics - Anfänger-Themen 30
C rekursive Methode verstehe nicht! Java Basics - Anfänger-Themen 3
B verstehe methode nicht methode Java Basics - Anfänger-Themen 2
B Erste Schritte Verstehe das nicht Java Basics - Anfänger-Themen 3
C verstehe get und set nicht Java Basics - Anfänger-Themen 3
J Interface Wie funktioniert das mit den Interfaces. Ich verstehe es einfach nicht! :( Java Basics - Anfänger-Themen 15
T ich verstehe array nicht! Java Basics - Anfänger-Themen 11
P for Schleife mit break, verstehe die Ausgabe nicht Java Basics - Anfänger-Themen 6
A Verstehe readLine()-Funktion nicht Java Basics - Anfänger-Themen 3
A Verstehe das GUI nicht! Java Basics - Anfänger-Themen 7
D Verstehe Zusammenhang nicht- Und ihr? Java Basics - Anfänger-Themen 4
M THREADS - Ich verstehe es nicht Java Basics - Anfänger-Themen 10
T Verstehe Bufferreader prinzip nicht Java Basics - Anfänger-Themen 3
E I-JVM verstehe ich das richtig (bytecode aufgabe) Java Basics - Anfänger-Themen 2
M Verstehe Aufgabe nicht, wie kann man schleifen einbauen? Java Basics - Anfänger-Themen 5
N Verstehe Step10 bei jME Eclipsetutorial nicht Java Basics - Anfänger-Themen 4
L Verstehe den Wert nicht! If-Anweisung Java Basics - Anfänger-Themen 5
N Verstehe diese Aufgabe nicht! Java Basics - Anfänger-Themen 16
S Finde den Fehler nicht/ verstehe Anweisung nicht Java Basics - Anfänger-Themen 12
K Ich verstehe switch einfach nicht Java Basics - Anfänger-Themen 4
C Verstehe Code-Teil nicht. Java Basics - Anfänger-Themen 2
S Ich verstehe diese Methode nicht! Java Basics - Anfänger-Themen 6
G Verstehe das nicht. bitte um hilfe Java Basics - Anfänger-Themen 13
R Thread startet nicht, verstehe nicht warum Java Basics - Anfänger-Themen 2
R Verstehe die Ausgabe von folgendem Code nicht Java Basics - Anfänger-Themen 4
A verstehe aufgabenstellung nicht! Java Basics - Anfänger-Themen 47
S verstehe den fehler nicht Java Basics - Anfänger-Themen 14
C Verstehe die Syntax nicht! Java Basics - Anfänger-Themen 2
M Verstehe den Quellcode nicht ganz Java Basics - Anfänger-Themen 3
7 Verstehe Programm nicht Java Basics - Anfänger-Themen 6
G verstehe das problem nicht :( Java Basics - Anfänger-Themen 4
S RegEx Syntax - ich verstehe sie einfach nicht! Java Basics - Anfänger-Themen 3
G verstehe den unterschied zwischen equals und == nicht Java Basics - Anfänger-Themen 3
E Verstehe eine Schleife nicht Java Basics - Anfänger-Themen 5
B Eine Linie zeichnenmit Java, ich verstehe das einfach nicht Java Basics - Anfänger-Themen 4
G Verstehe einen Aufruf absolut nicht Java Basics - Anfänger-Themen 2
M Queue-Datenstruktur: nach dem Elementen entfernen, das Ergebnis ist immer noch nicht optimal. Java Basics - Anfänger-Themen 3
N Java Taschenrechner hat Jemand vlt einen Tipp dafür wie ich jetzt die buttons verbinden kann und das Ergebnis auf dem textfield anzeigen lassen kann Java Basics - Anfänger-Themen 13
M Long-Typ in String-Änderung führt zu keinem Ergebnis bei großer Zahl Java Basics - Anfänger-Themen 11
A Ergebnis einer Methode bei einer anderen verwenden Java Basics - Anfänger-Themen 13
K Schleife berechnet kein Ergebnis (Vererbung) Java Basics - Anfänger-Themen 6
W Wie ziehe ich von einer bestimmten Zahl, Zahlen ab, bis mein Ergebnis null beträgt? Java Basics - Anfänger-Themen 10
J Interpreter-Fehler Programm gibt nicht gewünschtes Ergebnis aus Java Basics - Anfänger-Themen 11
G JTable, Zeile auswählen und Ergebnis an Schaltfläche übergeben Java Basics - Anfänger-Themen 4
Stephan_kl Reihenwert-Berechnung, Ergebnis mit vorherigem Ergebnis vergleichen Java Basics - Anfänger-Themen 11
Asura Falsches Ergebnis aufgrund der Nachkommastelle Java Basics - Anfänger-Themen 6
S Wie kann ich bei diesem Code erreichen, das als Ergebnis hier 15 herauskommt? Java Basics - Anfänger-Themen 23
D Brauche Dringend Hilfe...Prozedur/Funktionsprozedur Ergebnis augeben Java Basics - Anfänger-Themen 11
J warum ist das ergebnis 45? Java Basics - Anfänger-Themen 5
F If Abfrage gibt falsches Ergebnis.... Java Basics - Anfänger-Themen 6
A Mit JComboBox Ergebnis einen Integer aus einer anderen Klasse aufrufen. Java Basics - Anfänger-Themen 2
D ergebnis.matches("[1-9]?[0-9].[0-9][0-9]?") ein teil eines größeren Strings Java Basics - Anfänger-Themen 12
S Jede Ziffer einer Zahl auslesen, damit rechnen und beim Ergebnis wiederholen ? Java Basics - Anfänger-Themen 20
V Operatoren Warum kommt nicht das gewünschte Ergebnis dieser Operation? Java Basics - Anfänger-Themen 3
E Bruch erstellen - Von Int zu Double Ergebnis Java Basics - Anfänger-Themen 24
B Wieso gibt das Programm in der Console kein Ergebnis aus? Java Basics - Anfänger-Themen 2
TomatenBrot447 Programmieraufgabe - Grafische Oberfläche- falsches Ergebnis? Java Basics - Anfänger-Themen 15
J Kosinussatz liefert falschs Ergebnis Java Basics - Anfänger-Themen 2
J Berechnung liefert falsches Ergebnis Java Basics - Anfänger-Themen 2
J Ergebnis immer 0 Java Basics - Anfänger-Themen 8
P ergebnis einer schleife wiedergeben Java Basics - Anfänger-Themen 8
Anfänger2011 Frame zeigt nicht gewünschtes Ergebnis an ... Java Basics - Anfänger-Themen 5
AssELAss Datentypen BigDecimal Vergleichen ob Ergebnis >= 200 Java Basics - Anfänger-Themen 5
D Operatoren IF Abfrage liefert falsches Ergebnis Java Basics - Anfänger-Themen 4
U ArrayList.get() liefert falsches Ergebnis Java Basics - Anfänger-Themen 4
T Methoden Quadratwurzel - Kriterium für genaues Ergebnis Java Basics - Anfänger-Themen 2
I Random Ergebnis ausgeben und Gewinner ausgeben. Java Basics - Anfänger-Themen 3
X Ergebnis speichern! Java Basics - Anfänger-Themen 1
J Ergebnis wird gespammt sowie eine else if Frage Java Basics - Anfänger-Themen 2
P Variablen Negatives Ergebnis bei Multiplikation von großen Zahlen Java Basics - Anfänger-Themen 2
W Methoden While Schleifen Ergebnis im String speichern Java Basics - Anfänger-Themen 5
K Seltsames Ergebnis in Netbeans bei einfacher Multiplikation Java Basics - Anfänger-Themen 5
S Operatoren Taschenrechner Ergebnis ausgeben Java Basics - Anfänger-Themen 7

Ähnliche Java Themen

Neue Themen


Oben