Verstehe Quellcode von Türme von Hanoi nicht so ganz

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Verstehe Quellcode von Türme von Hanoi nicht so ganz

    Hallo,

    wie so häufig, wenn Anfänger (wie ich) nicht weiter wissen,
    bitten sie um Hilfe. Und ich benötige Hilfe… Habe auch schon die Suchfunktion dieses Board benutzt, leider aber ohne viel Erfolg.

    Es wäre sehr nett, wenn mir jemand ein paar Fragen zu dem Quellcode und der Anwendung beantworten könnte…

    Nebenbei sei erwähnt, dass mir die mathematische Seite von Hanoi bekannt ist, soll heißen, dass ich mich eingehend damit befasst habe (einschließlich Herleitung durch vollständige Induk.tion, rekursive Formeln f(n+1)=f(n)+1+f(n) und f(n)=(2^n)-1 etc.)
    Also ganz Ahnungslos bin ich bei dem Problem nicht, aber das reicht leider nicht…

    Z.B. bei ein Türmchen mit 4 Scheiben, der von Feld A nach Feld B bewegt werden soll, müßte man doch durch irgend ein Aufruf, die einzelnen Spiel-Züge zurückgegeben bekommen. Aber durch welchen? Und was kriege ich zurück?

    Es wäre wirklich voll nett, wenn Sie sich helfender weise meinem Anfägerproblem annehmen…

    Zu der Anwendung des Quellcode:
    Nochmal zur Anwendung für den Quellcode (wenn die schon mal steht, dann kann ich vielleicht durch rumprobieren ein bissel was selber rausfinden)
    Wenn ich eine Anwendung für den Quellcode schreibe, würde ich normalerweise so vorgehen. Erstmal mit jBuilder ein Eingabefed(jEingabe1), ein Button(jKnopf1) und ein Ausgabefeld(jAusgabe1) erstellen.
    Dann beim Button den Aufruf eingeben (oder heißt es Methode?).
    Hier als Beispiel mal mein Ansatz für den Button der Anwendung für den Quellcode unten:

    Quellcode

    1. long zahl1, ergebnis;
    2. ergebnis=0;
    3. zahl1=Long.parseLong(jEingabe1.getText());
    4. public String hanoi=new public String hanoi();
    5. ergebnis=zuege;
    6. jAusgabe1.setText(""+ergebnis);
    7. }
    8. }


    Aber das klappt nicht... Ist ja auch falsch, ok, aber ich hatte bei meinem Dozenten nur ein ganz einfaches iteratives (ergebnis=zahl1*zahl2) und ein rekursives (Ulam Kollatz Funktion) Beispiel für jBuilder 2006.
    Der Mensch verlangt ein bisschen viel für meinen Geschmack und ein Lehrbuch hilft mir da nur bedingt... nur leider saß ich links außen und nun muss ich das Ding nächstes mal vorstellen (also setzt euch nie in vorderste Rheihe außen hin!:autsch: )

    Wo liegt mein Fehler in der Anwendung? Hat da jemand einen Ansatz?
    Jedenfalls müßte ich in jAusgabe1 doch Zeichenketten bzw. Texte zurückbekommen, oder?

    Ich habe mir auch wikipedia/türme von Hanoi angeschaut aber der rekursive Ansatz ist auch nicht gerade übersichtlich und zudem auch noch mit anderen Befehlssätzen...

    Zum Quellcode:

    Nach dem hier augeführten Quellcode kann ich Zeile 2,3,7,8,10 und 11 gerade so noch verstehen...
    Das noch zur Erläuterung:
    n = Anzahl der Scheiben des Turms
    ap = Anfangsposition,
    zp = Zielposition und
    zw = Zwischenplatz.

    Quellcode

    1. public String hanoi(int n,String ap,String zp, String zw) {
    2. if (n>1) {
    3. this.hanoi(n-1,ap,zw,zp);
    4. zuege=zuege+"Ziehe Scheibe "+n+" von "+ap+" nach "+zp+"\n";
    5. this.hanoi(n-1,zw,zp,ap);
    6. }
    7. else{ zuege=zuege+"Ziehe Scheibe "+n+" von "+ap+" nach "+zp+"\n";
    8. }
    9. return zuege;
    10. }


    Zeile 2 besagt: öffentliche Klasse (String; hier weil hinterher Zeichenketten als Ausgabe1) mit dem Namen hanoi.Dann folgt eine Bennennung der Variablen (int n,String ap,String zp, String zw) wobei n Anzahl der Scheiben in ganzzahligen Werten und die anderen ap,zp und zw in Zeichenketten-Werten deklariert werden.
    Zeile 3: wenn Scheibenanzahl n größer 1 ist dann führe Zeile 3,4 und 5 aus
    Zeile 4:unklar!
    Zeile 5:unklar!
    Zeile 6:unklar!
    Zeile 7: verstanden
    Zeile 8: wenn Zeile 3 festellt das n=1, dann führe Zeile 9 aus
    Zeile 9:unklar!
    Zeile 10: verstanden
    Zeile 11:gib die Züge als Zeichenkette durch Aufruf zuege an die Anwendung zurück (Ausgabe1)

    Ist die Beschreibung der Zeilen korrekt?
    Kann jemand bei den unklaren Zeilen ein bisschen was zu sagen?
    Frage zu Zeile 4: Was bedeutet "this"? Ist "this.hanoi" nur ein Rückbezug auf Initialisierung mit Variablen in Zeile 2 ?
    Was bedeutet in diesem Fall (n-1,ap,zw,zp)?
    Frage zu Zeile 5: Kann man das sa interpretieren die "zuege"(die in Zeile 11 ausgegeben werden) sind gleich den vorangegangennen "zuege" + der Aktuelle, der gerade gezogen wird (siehe Bedingung in Zeile 3) ??? Was bedeutet das "+ +" um die Variablen? was bedeutet "\n"?
    Frage zu Zeile 6: Was bedeutet in diesem Fall (n-1,zw,zp,ap)? (Siehe Frage zu Zeile 4)
    Frage zu Zeile 9: ??? Siehe Frage zu Zeile 5

    Eigentlich möchte ich niemanden mit unnötigen Fragen belästigen, aber in diesem Fall weiß ich leider nicht weiter und muss jemanden fragen, der sich damit auskennt...

    Ich bin für jede Hilfe dankbar!!!
    Vielen Dank.

    Mit freundlichen Grüßen
    Botox01