Es gibt viele Probleme die sich mittels einer rekursiven Lösung leichter realisieren lassen, als mit einer iterativen Lösung. Das folgende Beispiel soll einen Denkansatz in diese Richtung darstellen. Gehen wir davon aus, daß wir eine Datenstruktur besitzen, welche ein Labyrinth beschreibt. Es soll nun ein Programm geschrieben werden, das durch dieses Labyrinth einen Weg findet. Um einen Weg nicht zwei mal zu gehen, markiert das Programm jeden Entscheidungspunkt mit einem Token - es zeigt an das dieser Punkt vom dem Programm schon besucht wurde. Der Algorithmus sucht irgendeinen Weg durch das Labyrinth - also nicht unbedingt den Schnellsten.

C-Beispiel für Rekursion: Navigation im Labyrinth (in C)

BOOLEAN FindPathThroughMaze
    (
    MAZE_T maze,
    POINT  position
    )
{
    POINT   newPosition;
    BOOLEAN success;

    /* Wenn diese Position bereits besucht wurde, kein weiterer Aufruf */
    if ( AlreadyTried( maze, position )
        return( FALSE );

    /* Haben wir den Ausgang gefunden */
    if ( ThisIsTheExit( maze, position )
        return( TRUE );

    /* Aktuelle Position merken */
    RememberPosition( maze, position );

    /* Alle Richtungen versuchen */
    if ( MoveLeft (maze, position, &newPosition )
        if ( FindPathThroughMaze( maze, newPosition )
            return( TRUE );

    if ( MoveUp (maze, position, &newPosition )
        if ( FindPathThroughMaze( maze, newPosition )
            return( TRUE );

    if ( MoveDown (maze, position, &newPosition )
        if ( FindPathThroughMaze( maze, newPosition )
            return( TRUE );

    if ( MoveRight (maze, position, &newPosition )
        if ( FindPathThroughMaze( maze, newPosition )
            return( TRUE );

    return( FALSE );
}