Rekursiver Algorithmus: Türme von Hanoi

Status
Nicht offen für weitere Antworten.
Tach Zusammen,

wahrscheinlich kann es keiner mehr hören und es gibt bestimmt auch interessantere Probleme als meines: Das mit den Rekursionen hab ich schon verstanden, aber mit folgendem listing kommich nicht ganz klar, will heißen, was passiert hier im einzelnen und vor allem was soll die Zeile nach dem println:

Code:
public class ToH {
  static void Tow (String Quelle, String Hilf, String Ziel, int n) {
    if (n ==1) 
      System.out.println ("Bewege Scheibe " +n+ " von " + Quelle + " nach " + Ziel);
    else {
      Tow (Quelle, Ziel, Hilf, n-1);
      System.out.println ("Bewege Scheibe " +n+ " von " + Quelle + " nach " + Ziel);
      Tow (Hilf, Quelle, Ziel, n-1);
    }
  }

  public static void main (String args []) {
    System.out.println ("Tuerme von Hanoi");
    Tow ("Quelle", "Hilfsziel", "Ziel", 3);
  }
}


Wäre echt ne feine Sache, wenn mir da mal jemand auf die Sprünge helfen könnte!

Grüße aus Duisburg

Timo :###
 

Bleiglanz

Gesperrter Benutzer
ist doch klar
n=3 die anzahl der scheiben
"quelle","ziel","hilfsziel" sind die 3 Stapel

wenn n=1,
========
dann gibt er einfach aus, dass er die Quelle zum Ziel schieben soll (das ist ja wohl klar)

wenn n>1, dann
============
Löst er das Problem mit (n-1) Steinen (aber mit Ziel und Hilfsziel vertauscht, d.h. er schiebt n-1 auf das Hilfsziel)

dann System.out.println: er legt die Scheibe n einfach von der Quelle zum Ziel

dann Löst er das Problem mit (n-1) (aber jetzt vom Hilfziel ausgehend auf Ziel mit quelle als hilfsziel), d.h. er legt jetzt die n-1 wieder aufs ziel

ist nur schlecht formuliert wegen den Strings :)
 
S

stev.glasow

Gast
admin.jpe
:D :lol:
War das mal 'n Boxer oder hat er beim Volleyball nicht auf gepasst ? :D
 

merc

Mitglied
Hallo,

wollte für mein Anliegen keinen neuen Thread aufmachen. Ich denke, das reicht auch so...

Ich bin derzeit auch an den "Türmen" drauf und dran, aber mit vier statt drei Stangen. Es klappt nur nicht. Anscheinend versteh ich die Rekursion doch nicht, wie ich erst zu Anfang dachte. Weiß jemand eine Lösung oder hat einen Tipp für mich?

Gruß
merc
 

Leroy42

Top Contributor
merc hat gesagt.:
aber mit vier statt drei Stangen
Wie soll das denn gehen :shock:
Die 4. Stange ist schlichtweg überflüssig.

Nun kann es vielleicht sein, daß bei Verwendung von 4 Stangen weniger Schritte
benötigt werden aber dann kommt mit Sicherheit ein völlig anderer Algorithmus
zum Tragen dein ein fähiger Mathematiker erst mal auf die Beine stellen muß.

Hast du dir die Aufgabe selbst gestellt, wurde sie dir gestellt oder hast du davon
irgendwo gelesen? In den letzten beiden Fällen wird dort bestimmt der Algorithmus
vorgegeben, den du posten kannst um dir zu helfen zu implementieren.

Im ersten Fall wünsche ich dir viel Spaß :cool:
 

merc

Mitglied
hi,

die aufgabe wurde mir mit dem hinweis gestellt, dass dies eine kleine modifikation darstellen würde. hier ein kleines, mathematisches beispiel: www.mathematische-basteleien.de/hanoi.htm

ich habe bis jetzt versucht, die problematik sowohl logisch als auch nach dem prinzip try-and-error zu behandeln. aber scheint nicht so trivial zu sein, wie ich dachte. wenn jemand ne idee hätte, wäre ich sehr dankbar.

gruß,
merc
 

Leroy42

Top Contributor
Genau was ich vermutete: Man braucht weniger Züge.
Aber ich kann mir nicht vorstellen, wie man so ad hoc einen rekursiven Algorithmus
aus der Nase schüttelt, der dies leistet. Ich denke es ist komplizierter als die, eher
naheliegende, 3-Stangen Lösung.

Mich würde diese Aufgabe zwar auch reizen, habe aber im Moment keine Zeit dazu.

Versuch doch einfach mal das für einige Anzahl Scheiben selbst auszuprobieren.
- erst ab 3 Scheiben zeigt sich ein Unterschied - und versuche daraus eine
Regelmäßigkeit abzulesen. So kommst du bestimmt am schnellsten auf den
Algorithmus. Den mußt du dann nur noch in Java coden.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
J Rekursiver Algorithmus Java Basics - Anfänger-Themen 9
J Rekursiver Horner-Schema-Algorithmus - Verstehe ich ihn richtig? Java Basics - Anfänger-Themen 2
N Unerklärlich: Rekursiver Algorithmus gibt falschen Datentyp zurück... Java Basics - Anfänger-Themen 4
F Rekursiver Algorithmus Java Basics - Anfänger-Themen 5
E Hilfe bei rekursiver Funktion Java Basics - Anfänger-Themen 3
G Variable aktualisiert sich nicht in rekursiver Methode Java Basics - Anfänger-Themen 4
K Rekursiver Vergleich von Textmuster und Text Java Basics - Anfänger-Themen 2
M Probleme bei rekursiver Zuordnung Java Basics - Anfänger-Themen 1
H Rekursiver Aufruf Java Basics - Anfänger-Themen 8
S Rekursiver InsertionSort ohne Schleife Java Basics - Anfänger-Themen 7
K Methoden Fibonacci in Array mit rekursiver Methoden Java Basics - Anfänger-Themen 19
4 Stack over flow bei rekursiver Tiefensuche Java Basics - Anfänger-Themen 5
T Rekursiver Methodenaufruf funktioniert nicht Java Basics - Anfänger-Themen 7
O Rekursiver Durchlauf verschachtelter Elemente Java Basics - Anfänger-Themen 1
B Quadratwurzel nach Heron in rekursiver Darstellung Java Basics - Anfänger-Themen 1
A Heap Space Error bei rekursiver Suche in Dateien trotz nur einer Zeile im Speicher Java Basics - Anfänger-Themen 26
W sysout in rekursiver methode Java Basics - Anfänger-Themen 4
A Rekursiver Pseudocode Java Basics - Anfänger-Themen 4
E Problem bei rekursiver Berechnung des Binomialkoeffizienten Java Basics - Anfänger-Themen 5
S Probleme bei Ausgabe von rekursiver Methode (List) Java Basics - Anfänger-Themen 16
D Binäre Suche für Integerarray in rekursiver Funktion Java Basics - Anfänger-Themen 5
O Faktorielle mit rekursiver Methode berechnen Java Basics - Anfänger-Themen 6
S Laufzeit bei rekursiver Methode messen Java Basics - Anfänger-Themen 6
J rekursiver Methodenaufruf Java Basics - Anfänger-Themen 12
D Datentypen Rekursiver Datentyp Java Basics - Anfänger-Themen 8
S Werte von rekursiver Methode Java Basics - Anfänger-Themen 5
Q rekursiver algo. Java Basics - Anfänger-Themen 16
M Potenz mithilfe rekursiver Funktion Java Basics - Anfänger-Themen 13
C Frage zu negativen und positiven Exponenten in rekursiver Methode Java Basics - Anfänger-Themen 11
G Rekursiver Aufruf einer JSP über eine JavaScript-Funktion Java Basics - Anfänger-Themen 5
G PRoblem mit rekursiver float additions methode Java Basics - Anfänger-Themen 9
B rekursiver Funktionsaufruf Java Basics - Anfänger-Themen 2
E fehlermeldung bei rekursiver grafik Java Basics - Anfänger-Themen 11
F Problem bei rekursiver Binärsuche Java Basics - Anfänger-Themen 2
K Algorithmus entwickeln Java Basics - Anfänger-Themen 1
laxla123 Eigenschaften eines Algorithmus (determiniert vs.. deterministisch) Java Basics - Anfänger-Themen 2
C Gewinnspiel erstellen mit Algorithmus Java Basics - Anfänger-Themen 3
C negamax-Algorithmus für Tic-Tac-Toe spielt manchmal falsch Java Basics - Anfänger-Themen 10
H Minimax Algorithmus in Tic Tac Toe Java Basics - Anfänger-Themen 3
M Minimax-Algorithmus für Vier gewinnt Java Basics - Anfänger-Themen 11
ohneInformatik; Trockentest Algorithmus, mathematischen Zusammenhang angeben Java Basics - Anfänger-Themen 3
M Minimax-Algorithmus Java Basics - Anfänger-Themen 17
mervanpolat Binary Search Algorithmus ausführen Java Basics - Anfänger-Themen 1
M monte carlo Algorithmus für 4 gewinnt Java Basics - Anfänger-Themen 12
izoards Sortier Algorithmus für Bounding Box Elememte Links nach Rechts und von Oben nach Unten Java Basics - Anfänger-Themen 33
S Algorithmus entwicklen, der zu einem gegebenen Datum die Jahreszeit ermittelt Java Basics - Anfänger-Themen 13
rosima26 Merge-Algorithmus Java Basics - Anfänger-Themen 53
C Ein Algorithmus soll schneller werden Java Basics - Anfänger-Themen 24
D Dijkstra Algorithmus Hilfe!! Java Basics - Anfänger-Themen 9
U Den Kuchen aufteilen - aber wie? (Rebalancing-Algorithmus) Java Basics - Anfänger-Themen 14
s_1895 Pseudocode Naiver Algorithmus Java Basics - Anfänger-Themen 17
H String verschlüsseln - eigener Algorithmus Java Basics - Anfänger-Themen 104
T Algorithmus für Index mit min-Wert Java Basics - Anfänger-Themen 2
Düsseldorf2002 Testen meines Algorithmus Java Basics - Anfänger-Themen 1
D Primzahlen Rechner nach Eratostenes von Kyrene Algorithmus Java Basics - Anfänger-Themen 2
KogoroMori21 Frage zum Euklidischen Algorithmus Java Basics - Anfänger-Themen 11
S Algorithmus java searchAll IKey Java Basics - Anfänger-Themen 4
S Algorithmus Datensätze einfügen wenn... Java Basics - Anfänger-Themen 26
KogoroMori21 MergeSort Algorithmus Java Basics - Anfänger-Themen 2
KogoroMori21 Textdatei einlesen im Array (Selection Sort Algorithmus) Java Basics - Anfänger-Themen 3
fendix Compiler-Fehler Algorithmus zur Bestimmung von Primzahlen Java Basics - Anfänger-Themen 7
S Algorithmus (reelle Zahl <65536 von dezimal zu dual) max. 10 Nachkommastellen Java Basics - Anfänger-Themen 4
G Algorithmus Graphen Java Basics - Anfänger-Themen 10
D Input/Output fehlerhafter Algorithmus zum Ersetzen von Array-Werten nach logischem Schema Java Basics - Anfänger-Themen 1
N Selection Algorithmus: Methode wird nicht erkannt (BlueJ) Java Basics - Anfänger-Themen 3
U Meinung zum Dijkstra Algorithmus Java Basics - Anfänger-Themen 6
U Dijkstra Algorithmus Laufzeit Java Basics - Anfänger-Themen 3
L Math.exp also eigenen Algorithmus Java Basics - Anfänger-Themen 2
Kirby.exe Algorithmus entwickeln Java Basics - Anfänger-Themen 37
M Algorithmus Max-Heap? Java Basics - Anfänger-Themen 3
I Labyrinth auf der Basis eines rekursiven Algorithmus Java Basics - Anfänger-Themen 27
CptK Best Practice Algorithmus nach jedem Schritt zum Visualisieren pausieren Java Basics - Anfänger-Themen 3
A Algorithmus effizienter machen Java Basics - Anfänger-Themen 1
V Algorithmus zur fortlaufenden Berechnung des duechscjnt Java Basics - Anfänger-Themen 1
M Dijkstra Algorithmus in Graphen auf mehrere verschiedene Knoten anwenden lassen Java Basics - Anfänger-Themen 11
O Labyrinth Algorithmus Java Basics - Anfänger-Themen 3
G Quicksort Algorithmus Java Basics - Anfänger-Themen 12
S Binäre-Suche Algorithmus Java Basics - Anfänger-Themen 1
D Algorithmus in Pseudocode mit log2(n) Operationen erstellen Java Basics - Anfänger-Themen 3
C Laufzeit eines Sortier-Algorithmus ermitteln Java Basics - Anfänger-Themen 4
H aufgabe java luhn algorithmus Java Basics - Anfänger-Themen 10
A Datenstruktur für Savings Algorithmus und Planung von kleinen Programmierprojekten Java Basics - Anfänger-Themen 1
J Algorithmus für eine Reihe implementieren Java Basics - Anfänger-Themen 2
S Dijkstra Algorithmus funktioniert nicht Java Basics - Anfänger-Themen 4
N Denksportaufgabe durch Algorithmus lösen Java Basics - Anfänger-Themen 2
S Problem mit einem rekursivem FloodFill Algorithmus Java Basics - Anfänger-Themen 62
B Algorithmus Square und Multiply Java Basics - Anfänger-Themen 3
J Algorithmus - Strings auf eigene Reihenfolge miteinander vergleichen Java Basics - Anfänger-Themen 4
D Frage Boyer-Moore Algorithmus Java Basics - Anfänger-Themen 7
M Komplexität Algorithmus Java Basics - Anfänger-Themen 8
H Zeichen im algorithmus Java Basics - Anfänger-Themen 4
B Code Verständnisfragen - FLoyd Warshall Algorithmus Java Basics - Anfänger-Themen 1
B Algorithmus zum entmischen einer Zahlenfolge Java Basics - Anfänger-Themen 15
X Minimax-Algorithmus über alle Kanten möglich? - Kanten darstellen Java Basics - Anfänger-Themen 1
T Algorithmus zur Überprüfung eines binären Suchbaums Java Basics - Anfänger-Themen 2
K Best Practice Algorithmus für Berechnung von Zahlenreihenfolge Java Basics - Anfänger-Themen 12
M Simpler Algorithmus läuft extrem langsam. Java Basics - Anfänger-Themen 3
K Erste Schritte Brute Force Algorithmus Java Basics - Anfänger-Themen 2
L Frage zu BubbleSort Algorithmus Java Basics - Anfänger-Themen 2
B gibt es ein Stundenplan-Algorithmus? Java Basics - Anfänger-Themen 11

Ähnliche Java Themen

Neue Themen


Oben