kostenloser Webspace werbefrei: lima-city


Suche auf lima-city

  • in: Hanoi Turm Problem iterativ lösen

    geschrieben von rachyy

    leonards schrieb:
    Da die Funktion sich selber aufruft, sobald n ungleich 1 ist, kann es gut sein, das dir acht Schritte angezeigt werden. So rufst du die Funktion ein mal auf und sie selber ruft sich noch drei mal auf. In den dann aufgerufen Funktionen kann sie sixh natürlich nochmals aufrufen...
    Nur aus interesse: Kannst du eventuell deinen fertigen Code hier mal schreiben?


    Hier mein code ist nicht arg anders als deiner habe schon deinen verwendet aber habe so aktiv nachgefragt da ich einfach nicht nur kopieren möchte sonder auch verstehen was dier code mach und wie er es macht.

    Und nochmal danke für die schnellen antworten

    L.G Alessandro

    def bewege(n, von, ueber, nach):
            if n==1:
                print 'Lege einen Stein von Feld', von, 'nach Feld', nach,'.'
            else:
                bewege(n-1, von, nach, ueber)
                bewege(1, von, ueber, nach)
                bewege (n-1, ueber, von, nach)
            
        
    bewege (3,1,2,3)
  • in: Hanoi Turm Problem iterativ lösen

    geschrieben von rachyy

    leonards schrieb:wird die Funktion drei mal aufgerufen


    Aber wieso hört das Programm auf sich selber aufzurufen.

    Ach jetzt habe ich es verstanden danke nochmal aber in der konsole werden mir dann acht schritte angezegit wie kann dass sein wenn die funktion nur 3 mal ausgefürt wird?
  • in: Hanoi Turm Problem iterativ lösen

    geschrieben von rachyy

    leonards schrieb:
    rachyy schrieb:
    leonards schrieb:
    Das ist ganz einfach, verwende folgenden Code:
    def bewege(n, von, ueber, nach):
            if n==1:
                print 'Lege eine Scheibe von', von, 'nach', nach,'.'
            else:
                bewege(n-1, von, nach, ueber)
                bewege(1, von, ueber, nach)
                bewege (n-1, ueber, von, nach)
            
        
    bewege (3,1,2,3)
    raw_input("Beenden mit <ENTER>")


    könntest du den code erläutern muss nämlich die selbe aufgabe bewältigen und würde das schon gerne verstehen:)

    L.G. Alessandro

    Ich kann mal versuchen, den Code zu erläutern, ich habe allerdings keine Ahnung, wofür dieser Überhaupt ist.
    Wenn das erste Argument (also n) 1 ist, wird der Text "Lege eine Scheibe von x nach y." angezeigt. (x und y sind natürlich von und nach). In jedem anderen Fall (n ist also ungleich 1) wird die Funktion drei mal aufgerufen. DIe Argumente werden dabei in der Reihenfolge vertauscht. Zusätlich wird bei dem ersten und dritten Aufruf für das neue n das alte n minus 1 angegeben wird.
    bewege(3,2,1,3)
    raw_input("Beenden mit <ENTER>")

    In der ersten Zeile dieses Codeabschnitts wird die Funktion bewege (die ja vorher definiert wurde) aufgerufen. Als Argumente werden 3 für n, 1 für von, 2 für über und 3 für nach mitgegeben. Dann wird diese Funktion ausgeführt (und führt sich selber auch noch mehrmals aus). Wenn alles fertig ist, wird der Text "Beenden mit <ENTER>" angezeigt und bei dem Tastendruck von Enter beendet sich das Programm.

    Für mehr Informtionen müsste ich aber noch mal erfahren, wofür dieser Code überhaupt da ist. Wenn fragen sind, bitte einfach fragen, ich versuche sie bestmöglichst zu beantworten.
    vielen Danke für die Antwort der code ist für die lösung von Türme von hanoi.

    habe alles so weit verstanden aber eine frage hätte ich noch woher weis das programm wann es zu ende ist?
    und wie bist du zu dem code gekommen hast du ihn selbst geschrieben?
  • in: Hanoi Turm Problem iterativ lösen

    geschrieben von rachyy

    leonards schrieb:
    Das ist ganz einfach, verwende folgenden Code:
    def bewege(n, von, ueber, nach):
            if n==1:
                print 'Lege eine Scheibe von', von, 'nach', nach,'.'
            else:
                bewege(n-1, von, nach, ueber)
                bewege(1, von, ueber, nach)
                bewege (n-1, ueber, von, nach)
            
        
    bewege (3,1,2,3)
    raw_input("Beenden mit <ENTER>")


    könntest du den code erläutern muss nämlich die selbe aufgabe bewältigen und würde das schon gerne verstehen:)

    L.G. Alessandro

Login zum Webhosting ohne Werbung!