Registrierung Kalender Mitgliederliste Teammitglieder Suche Häufig gestellte Fragen Zur Startseite

Informatiker Board » Themengebiete » Praktische Informatik » rekursiv » Hallo Gast [Anmelden|Registrieren]
Letzter Beitrag | Erster ungelesener Beitrag Druckvorschau | An Freund senden | Thema zu Favoriten hinzufügen
Zum Ende der Seite springen rekursiv
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
neuling96
unregistriert
rekursiv Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Was gibt folgendes (rekursive) Programm auf dem Bildschirm aus?
import IOulm.*;
public class Obscure{
public static void obscure(int x, int y){
if (x*y<=4)
return;
Write.Line("x: "+x);
if (x>=y)
obscure(x-1, y);
else
obscure(y, x-1);
Write.Line("y: "+y);
}
public static void main(String[] args){
obscure(3, 4);
}
}

Beim ersten durch lauf nach obscure(3, 4)-> wird zu obscure(4, 2)??

Ich versteh nicht wie das überhaupt funktioniert
05.12.2014 18:53
eulerscheZahl eulerscheZahl ist männlich
Foren Gott


Dabei seit: 04.01.2013
Beiträge: 2.859

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Zitat:
Beim ersten durch lauf nach obscure(3, 4)-> wird zu obscure(4, 2)

richtig!

und welcher Aufruf folgt dann aus obscure(4, 2)?

Und wie sieht es mit der Ausgabe aus?
Das x wird oberhalb des rekursiven Aufrufs schon ausgegeben, das y erst danach.
Folglich werden erst alle x-e aus obscure(x, y) ausgegeben - und zwar in der Reihenfolge, wie die Funktion aufgerufen wird.
Anschließend werden die y in umgekehrter Reihenfolge ausgegeben.

__________________
Syntax Highlighting fürs Board (Link)
05.12.2014 19:26 eulerscheZahl ist offline Beiträge von eulerscheZahl suchen Nehmen Sie eulerscheZahl in Ihre Freundesliste auf
neuling96
unregistriert
Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

obscure(3, 4)-> wird zu obscure(4, 2)->obscure(3,2)->obscure(2,2)

Aber nach obscure(2,2)
Write.Line("x: "+x);

Also x=2?
05.12.2014 19:31
eulerscheZahl eulerscheZahl ist männlich
Foren Gott


Dabei seit: 04.01.2013
Beiträge: 2.859

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Bei obscure(2,2) wird ja schon abgebrochen, bevor es zur Ausgabe kommt.
Aber von den obscure davor ist jeweils noch ein x auszugeben, bevor überhaupt der rekursive Aufruf zustande kommt. Und danach eben in umgedrehter Reihenfolge das y.

Ich habe das Programm etwas modifiziert, damit ich zusätzlich noch erfahre, von welchem Funktionsaufruf die Ausgabe stammt.
Der Anfang sieht so aus:
code:
1:
2:
3:
x: 3 von obscure(3,4);
x: 4 von obscure(4,2);
x: 3 von obscure(3,2);

wie geht es weiter?

__________________
Syntax Highlighting fürs Board (Link)
05.12.2014 19:41 eulerscheZahl ist offline Beiträge von eulerscheZahl suchen Nehmen Sie eulerscheZahl in Ihre Freundesliste auf
neuling96
unregistriert
Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

dann für y:
y: 2
y: 2
y: 4
05.12.2014 19:49
eulerscheZahl eulerscheZahl ist männlich
Foren Gott


Dabei seit: 04.01.2013
Beiträge: 2.859

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

passt Daumen hoch

__________________
Syntax Highlighting fürs Board (Link)
05.12.2014 19:49 eulerscheZahl ist offline Beiträge von eulerscheZahl suchen Nehmen Sie eulerscheZahl in Ihre Freundesliste auf
neuling96
unregistriert
Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

danke Wink
05.12.2014 20:01
Baumstruktur | Brettstruktur
Gehe zu:
Informatiker Board » Themengebiete » Praktische Informatik » rekursiv