Rekursion verstehen

El Hadji

Bekanntes Mitglied
Servus Community,
Leider ihr seid mich noch nicht los.
Jetzt kommt die Rekursion zu mir. Ich hab mir schon einige Videos angeschaut und auch einige Bsp.
Aber ich hab den Dreh noch nicht heraus. Könnt ihr mir sagen wie ich am besten vorgehen.(Basisfall Überlegung oder etc.)
Ich verstehe ja leider nicht mal das Hanoi Beispiel -.-
Code:
/**
* Übung 3 Bsp.5
*/
package ue51;

import java.util.*;

public class Hanoi
{
  
    private static ArrayList<String> bewegungen;
   
 
    public Hanoi()
    {
    }
   
  
    public static ArrayList<String> getHanoiSequence(int n)
    {
        bewegungen = new ArrayList<String>();
        String stabA = "A";
        String stabB = "B";
        String stabC = "C";
        hanoi(stabA,stabB,stabC,n);
        return bewegungen;
    }
   
    // auf Stab A liegen die n kleinsten Scheiben
   
    public static void hanoi(String stabA,String stabB,String stabC,int n)
    {
        if(n == 0) return;
        {
           
            hanoi(stabA,stabC,stabB,n-1);
            bewegungen.add(stabA+stabC);
            hanoi(stabB,stabA,stabC,n-1);
        }
    }
      
}

mfg El Hadji
 
Bzw. ich hätte eine Erklärung gerne
Code:
 public static void hanoi(String start,String hilfe,String ziel,int n)
    {
        if(n==1)
        {
            System.out.println("Lege die oberste Scheibe von " +
           "Turm " + start + " auf Turm " + ziel + ".");
        }
        else
        {
            //n-1 obersten Scheiben von Start nach Ziel und Hilfe verschoben;
            hanoi(start,ziel,hilfe,n-1);
           
            //unterste Scheibe von Start nach Hilfe und Ziel
            hanoi(start,hilfe,ziel,1);
           
            //die vorigen n-1 Scheiben von Hilfe nach Start und Ziel
            hanoi(hilfe,start,ziel,n-1);
        }
    }

Wie kann die Methode je zu
hanoi(start,hilfe,ziel,1); kommen

Ich dachte die Methode wird von oben nach unten durchgegangen. Dann würde ja n immer nur 1 weniger werden und am Schluss würde einmal was hinzugefügt werden
 
Wie kann die Methode je zu
hanoi(start,hilfe,ziel,1); kommen [...] Ich dachte die Methode wird von oben nach unten durchgegangen.
Ja, in der Methode wird ein Schritt nach dem anderen ausgeführt. Wird in einem Schritt eine Methode aufgerufen, ist es dem Computer völlig egal, ob die Methode sich selbst oder eine andere Methode aufruft.

Wenn Du also hanoi(start, hilfe, ziel, 3) aufrufst, werden nacheinander die Schritte
Java:
hanoi(start,ziel,hilfe,2);
hanoi(start,hilfe,ziel,1);
hanoi(hilfe,start,ziel,2);
ausgeführt.
 

Neue Themen


Zurück
Oben