Menu schließen

Türme von Hanoi

Frage: Türme von Hanoi
(7 Antworten)


Autor
Beiträge 0
14
Ich habe das soweit eben programmiert:


void hanoi(int n, char a, char b, char c)
{
if (n<=1)
{
cout << "Trage oberste Scheibe von " << a << " nach " << b << endl;
}
else
{
hanoi(n-1, a,c,b);
hanoi(1, a,c,b);
hanoi(n-1, c,b,a);
}

}


mit dem Aufruf hanoi(3,`A`,`B`,`C`);

Und raus kommt

Trage oberste Scheibe von A nach B
Trage oberste Scheibe von A nach B
Trage oberste Scheibe von B nach C
Trage oberste Scheibe von A nach C
Trage oberste Scheibe von C nach A
Trage oberste Scheibe von C nach A
Trage oberste Scheibe von A nach B

Aber die ersten beiden Zeilen der Ausgabe können ja gar nicht gehen und die unterste kann auch nicht gehen, da er ja nach C transportieren soll :( Was ist denn daran falsch?
Frage von Webperoni (ehem. Mitglied) | am 29.04.2008 - 22:53


Autor
Beiträge 7242
45
Antwort von John_Connor | 29.04.2008 - 22:55
Ich
musste mal Hanoi mit Delphi programmieren... leider ist nix draus geworden... xD


Autor
Beiträge 0
14
Antwort von Webperoni (ehem. Mitglied) | 29.04.2008 - 23:04
Das ist auch nicht so leicht.... Weiß da denn keiner was da falsch sein kann? :(


Autor
Beiträge 2323
10
Antwort von nosferatu_alucard | 29.04.2008 - 23:14
also ich hab ihn nur in delphi programmieren müssen


Autor
Beiträge 2323
10
Antwort von nosferatu_alucard | 29.04.2008 - 23:36
und bie mir ist der was geworden hab mir da foren zur hilfe gezogen war ganz gut dadurch hab 15 insgesamt auf facharbeit und programm - sortieren und suchen von daten bekommen ;)


Autor
Beiträge 2271
4
Antwort von heart_shaped_box | 29.04.2008 - 23:41
http://www.myvideo.de/watch/2536700/Anti_Hannoi


Autor
Beiträge 0
14
Antwort von Webperoni (ehem. Mitglied) | 30.04.2008 - 13:57
Wer mir sagt, was falsch ist, bekommt eine Auszeichnung :)

 
Antwort von GAST | 30.04.2008 - 14:27
ihr "deppen", den algorithmus steht bei wikipedia

funktion bewege (Zahl i, Stab a, Stab b, Stab c) {
falls (i > 0) {
bewege(i-1, a, c, b);
verschiebe oberste Scheibe von a nach c;
bewege(i-1, b, a, c);
}
}

Verstoß melden
Hast Du eine eigene Frage an unsere Informatik-Experten?

> Du befindest dich hier: Support-Forum - Informatik