Teil von  SELFPHP   Teil von  Praxisbuch  Teil von  Sprachelemente und Syntax  Teil von  Funktionen und Prozeduren
Professional CronJob-Service

Suche

:: Anbieterverzeichnis ::

Globale Branchen

Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP  

 

:: SELFPHP Forum ::

Fragen rund um die Themen PHP?
In über 130.000 Beiträgen finden Sie sicher die passende Antwort!  

 

:: Newsletter ::

Abonnieren Sie hier den kostenlosen SELFPHP Newsletter!

Vorname: 
Name:
E-Mail:
 
 
 
Rekursive Funktionen: Seite 3

SELFPHP ist Shopware Solution Partner
Shopware ist ein vielfach ausgezeichnetes Onlineshop-System der shopware AG, das auf PHP. Zend Framework und SQL basiert.
SELFPHP unterstützt Sie als Shopware Solution Partner bei der Konzeption, Programmierung und Realisierung Ihres Onlineshops und passt Shopware bei Bedarf an Ihre Unternehmensbedürfnisse an. Weitere Informationen



Türme von Hanoi

Ein Turm aus n verschieden großen Scheiben soll mit möglichst wenig Zügen (Umsetzungen) vom Startplatz S auf den Zielplatz Z transportiert werden. Ein dritter Platz steht als Hilfsplatz H zur Verfügung. Dabei gelten die folgenden Spielregeln:
  • Jeder Zug besteht darin, eine Scheibe zu bewegen.

  • Niemals darf eine größere Schiebe über einer kleineren Scheibe zu liegen kommen.




Bild 3.9: Türme von Hanoi


Schlüsselprinzip: Rekursion

Wenn wir das Problem in einem etwas einfacher gelagerten Fall lösen können, dann kann man diese Lösung auch für den schwierigeren Fall verwenden.
2 Scheiben:
- übertrage den Turm mit 1 Scheibe vom Start- auf den Hilfsplatz
- bewege die Scheibe 2 vom Start- auf den Zielplatz
- übertrage den Turm mit 1 Scheibe vom Hilfs- auf den Zielplatz
3 Scheiben:
- übertrage den Turm mit 2 Scheiben vom Start- auf den Hilfsplatz
- bewege die Scheibe 3 vom Start- auf den Zielplatz
- übertrage den Turm mit 2 Scheiben vom Hilfs- auf den Zielplatz
...
n Scheiben:
- übertrage den Turm mit n-1 Scheiben vom Start- auf den Hilfsplatz
- bewege die Scheibe n vom Start- auf den Zielplatz
- übertrage den Turm mit n-1 Scheiben vom Hilfs- auf den Zielplatz


Die Baumstruktur beim Aufrufen der Syntax



Bild 3.10: Ablauf der Rekursion

Lösung
<?php
function setzeTurm($n, $start, $ziel, $hilf) {
  if ($n>0) {
    setzeTurm ($n-1, $start, $hilf, $ziel);
    echo("Bewege Scheibe $n vom $start-Platz zum $ziel-Platz.<br>");
    setzeTurm ($n-1, $hilf, $ziel, $start);
  }
}

setzeTurm (3,'Start','Ziel','Hilfsplatz');
?>

Ausgabe
Bewege Scheibe 1 vom Start-Platz zum Ziel-Platz.
Bewege Scheibe 2 vom Start-Platz zum Hilfsplatz-Platz.
Bewege Scheibe 1 vom Ziel-Platz zum Hilfsplatz-Platz.
Bewege Scheibe 3 vom Start-Platz zum Ziel-Platz.
Bewege Scheibe 1 vom Hilfsplatz-Platz zum Start-Platz.
Bewege Scheibe 2 vom Hilfsplatz-Platz zum Ziel-Platz.
Bewege Scheibe 1 vom Start-Platz zum Ziel-Platz.

Weitere Beispiele für rekursive Probleme sind:
  • Wege aus einem Labyrinth
  • Sortierverfahren
  • Szierpinski-Dreiecke
  • Baum des Pythagoras
  • Kockkurven
  • Julia- und Mandelbrotmengen
  • Logistisches Wachstum
  • Fibonacchi-Folge
  • Springer-Problem
  • 8-Damen-Problem




Rekursive Funktionen Seite 2
 




:: Premium-Partner ::

Webhosting/Serverlösungen

Pixel X weitere Premium-Partner
 

:: SELFPHP Sponsor ::

HighText Verlag Graf und Treplin OHG weitere Sponsoren
 


:: Buchempfehlung ::

Das Zend Framework

Das Zend Framework zur Buchempfehlung
 

:: Anbieterverzeichnis ::

Webhosting/Serverlösungen

Suchen Sie den für Sie passenden IT-Dienstleister für Ihr Webhosting-Paket oder Ihre Serverlösung?

Sie sind nur ein paar Klicks davon entfernt!


 

Ausgewählter Tipp im Bereich PHP-Skripte


Vorschaubilder erstellen

Weitere interessante Beispiele aus dem SELFPHP Kochbuch finden Sie im Bereich PHP-Skripte
 

SELFPHP Code Snippet


Aktuelles Datum in einem Kalender hervorheben (CSS-Layout)

Weitere interessante Code Snippets finden Sie auf SELFPHP im Bereich PHP Code Snippets
 
© 2001-2017 E-Mail SELFPHP OHG, info@selfphp.deImpressumKontakt
© 2005-2017 E-Mail PHP5 Praxisbuch - Matthias Kannengiesser, m.kannengiesser@selfphp.de