Quicksort und Rekursiv: Türme von Hanoi

Status
Nicht offen für weitere Antworten.
H

Hoschio

Gast
Hallo !

ich check das mit der rekursivität nicht !

Also jedenfalls nicht an diesem Beispiel:

Code:
public class Test
{   public static void main (String args[])
    {   hanoi(4,1,2,3); // bewege 4 Scheiben von 0 nach 1
    }

    static void hanoi (int n, int from, int to, int using)
    // Bewegt n Scheiben von from nach to, wobei using frei ist.
    {   if (n==1)
        {   System.out.println("Move disk from "+from+" to "+to);
        }
        else
        {   hanoi(n-1,from,using,to);
            System.out.println("Move disk from "+from+" to "+to);
            hanoi(n-1,using,to,from);
        }
    }
}

das quicksort problem füg ich gleich hinzu[/code][/quote]
 
H

hoschiiiiiiiii

Gast
also hab was vergessen:

das problem sieht wie fiolgt aus

x
xx
xxx
xxxx

Stapel 0 Stapel 1 Stapel 2

Nicht wundern 1+2 sind ja leer.

Das prog bewegt die 4 scheiben von 0 nach 1.

die anderen stapel dürfen genutzt werden.

nur darf ein grössere block nie auf einen kleineneren gelegt werden

sprich der mit 4 x'en hier darf nicht auf 3 x'e oder 2 oder 1 gelegt werden.


das sin die spielregeln !!!!!!!!1


Also versucht das mal anfängergerecht zu erklären :bae:

ich dank im voraus
 

thE_29

Top Contributor
am besten du nimmst einen Zettel + Bleistift zur Hand startest dein Programm und debugst alles schön durch!

so wirst du sehen was er genau sortiert und so weiß du dann auch 100%ig (naja ungefähr) wie der sort funktioniert!

rekursiv is immer gemein, aber super :)
 

Reality

Top Contributor
Wieso wird bei der Rekursion jedes Mal die Variblen vertauscht?! Wenn ich das compiliere, kommt bei mir nur Mist raus. Von sotieren ist das nichts zu sehen...

Liebe Grüße
Reality
 

Isaac

Bekanntes Mitglied
Kennst du die Türme von Hanoi? Ein kleinerer Ring darf nie auf einem grösseren Ring liegen.

Wenn du 3 Türme hast und 3 Ringe:

1 -> 2 (kleiner Ring von links in die Mitte)
1 -> 3 (mittlerer Ring von links nach rechts)
2 -> 3 (kleiner Ring auf den mittleren Ring)
1 -> 2 (grosser Ring von links in die Mitte)
3 -> 2 (kleiner Ring von rechts in die Mitte)
3 -> 1 (mittlerer Ring von rechts nach links)
2 -> 1 (kleiner Ring von der mitte nach links)
2 -> 3 (grosser Ring von der mitte nach rechts)
1 -> 2 (kleiner Ring von links in die Mitte)
1 -> 3 (mittlerer Ring von links nach rechts auf den grossen Ring)
2 -> 3 (und den kleinen auf den mittleren und den grossen
 

Anubis

Bekanntes Mitglied
Um die Rekursion zu verstehen, muss man erstmal die Rekursion verstehen 8)

Die Türme sind ein schwieriges Beispiel um die Rekursion zu verstehen. Viel einfacher wäre Fakultet:

2! = 1*2 (sprich 2 fakultät gleich 1 mal 2)
3! = 1*2*3
7! = 1*2*3*4*5*6*7
oder rekursiv: (Rekursiv: "sich selbs aufrufend")
7! = 6!*7
6! = 5!*6

Oder Allgeimein:
n! = (n-1)!*n | für: n > 1
1! = 1
0! = 1
für n < 0 ist die Fakultätsfunktion nicht definiert

Dazu eine Methode:

Code:
public int fakul (int n) {
// berechnet n!
  if (n > 1) return fakul(n-1) * n;
  if (n < 2) return 1;
}

Die Methode erhählt einen Parameter n und gibt, fall n > 1 ist das Produnkt aus (n-1)! und n zurück und benutz zur Berechnung sich selbst mit dem parameter (n-1).

Für n < 2 (n <= 1) wird 1 zurückgeben.
 

Anubis

Bekanntes Mitglied
Das ist auch schenll gelöst:

Grundlösung:
1. Du schiebst alles, bis auf den untersten auf die Reserve
2. Du schiebst den Untersten auf Ziel
3. du schiebst den Reservestapel aufs Ziel

Wie mache ich 1. ?
du betrachtest 1. als einzelne Aufgabe, benutz aber das Ziel als Reserve und die Reserve als Ziel

Das geht so lange weiter, bis zu nur einen schieben brauchst.

Du betrachtest, dass was du bei "Wie mache ich 1. ?" machst, wieder als Gesammtaufgabe.
 

Hoschi49

Mitglied
das prinzip war mir klar nur rekursiv kann ich mir das kaum vorstellen aber ichkriegs hin


danke für die posts,

cuuuuuuuuuuu
 

Anubis

Bekanntes Mitglied
Hast du schon mal mit Binären Bäumen gearbeitet?

Daran kann man Rekursion sehr gut verstehen.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
I Java Quicksort PAP Java Basics - Anfänger-Themen 2
B Quicksort in Verbindung mit einem Projekt Java Basics - Anfänger-Themen 1
M QuickSort und Liste Java Basics - Anfänger-Themen 6
S Laufzeit Quicksort wenn alle Elemente gleich sind Java Basics - Anfänger-Themen 4
G Quicksort Algorithmus Java Basics - Anfänger-Themen 12
Hanschyo Quicksort sortiert von groß nach klein Java Basics - Anfänger-Themen 3
R Quicksort mit Interface Comparable Java Basics - Anfänger-Themen 6
L Quicksort verstehen Java Basics - Anfänger-Themen 3
M Quicksort Laufzeit langsam Java Basics - Anfänger-Themen 5
M Quicksort Laufzeit langsam Java Basics - Anfänger-Themen 0
J Quicksort mit Stack Java Basics - Anfänger-Themen 4
Liondary Quicksort Java Basics - Anfänger-Themen 20
K Quicksort Fehler in der Implementierung Java Basics - Anfänger-Themen 2
S Quicksort Algorithmus Java Basics - Anfänger-Themen 2
D Java Quicksort Java Basics - Anfänger-Themen 5
A Frage zu QuickSort Java Basics - Anfänger-Themen 9
B Quicksort mit Durchschnitt als Pivot Java Basics - Anfänger-Themen 1
K Quicksort Java Basics - Anfänger-Themen 3
M Quicksort - Probleme Java Basics - Anfänger-Themen 5
T QuickSort implementieren Java Basics - Anfänger-Themen 5
R QuickSort Verständis Problem (?) Java Basics - Anfänger-Themen 2
M Quicksort implementierung Java Basics - Anfänger-Themen 23
E Quicksort Java Basics - Anfänger-Themen 8
Xendarii Quicksort gibt kein Ergebnis aus Java Basics - Anfänger-Themen 13
E QuickSort: Ergebniss speichern Java Basics - Anfänger-Themen 2
P quickSort eines Objekt-Arrays geht nicht! Java Basics - Anfänger-Themen 11
F Stackoverflow bei Quicksort Java Basics - Anfänger-Themen 2
F Quicksort Java Basics - Anfänger-Themen 22
C Quicksort Invariante Java Basics - Anfänger-Themen 2
C QuickSort - Pivot in der Mitte Java Basics - Anfänger-Themen 5
P QuickSort iterativ Java Basics - Anfänger-Themen 5
K Eine Frage zum Quicksort Java Basics - Anfänger-Themen 11
B Quicksort --> Methodenaufruf Java Basics - Anfänger-Themen 10
B QuickSort - Fehler nicht zu finden Java Basics - Anfänger-Themen 2
W Quicksort Problem Java Basics - Anfänger-Themen 3
A Quicksort, #Vergleiche zählen klappt nicht Java Basics - Anfänger-Themen 3
J Quicksort Implementierung-- Exception ArrayOutOfBounds Java Basics - Anfänger-Themen 6
M Fehler in meinem Quicksort! Java Basics - Anfänger-Themen 21
B Quicksort Struktogramm Java Basics - Anfänger-Themen 9
G Frage zu Quicksort Java Basics - Anfänger-Themen 18
0 Quicksort bsp Java Basics - Anfänger-Themen 5
B Quicksort Problem Java Basics - Anfänger-Themen 6
S Mein Quicksort Problem: he method quickSort(int[], int, int) Java Basics - Anfänger-Themen 2
M Quicksort Java Basics - Anfänger-Themen 2
C Quicksort raten Java Basics - Anfänger-Themen 2
K ArrayList sortieren mit Quicksort Java Basics - Anfänger-Themen 3
M Quicksort Java Basics - Anfänger-Themen 4
J Quicksort programmieren Probleme Java Basics - Anfänger-Themen 9
S Quicksort Programm Java Basics - Anfänger-Themen 7
D Quicksort Java Basics - Anfänger-Themen 3
K Parameterübergabe bei quickSort Java Basics - Anfänger-Themen 6
S QuickSort will mir nicht in den Kopf (an einer Stelle) Java Basics - Anfänger-Themen 14
0 Quicksort Java Basics - Anfänger-Themen 2
M QuickSort Java Basics - Anfänger-Themen 4
J QuickSort - kurze Frage Java Basics - Anfänger-Themen 9
H Passwort Brute Force rekursiv Java Basics - Anfänger-Themen 7
1 Array rekursiv durchlaufen Java Basics - Anfänger-Themen 8
E Rekursiv Objekte erzeugen - geht das? Java Basics - Anfänger-Themen 2
Cassy3 Binäre Bäume Rekursiv durchlaufen und bestimmte Elemente Zählen Java Basics - Anfänger-Themen 6
R0m1lly Kombinationen aus int array rekursiv Java Basics - Anfänger-Themen 2
L Rekursiv gegebenes Passwort herausfinden. Java Basics - Anfänger-Themen 2
P9cman Char Index rekursiv finden Java Basics - Anfänger-Themen 4
B Methoden Rekursiv festellen, ob eine Zahl gerade-oft vorkommt oder nicht Java Basics - Anfänger-Themen 4
S Methoden Methodenaufruf rekursiv zählen Java Basics - Anfänger-Themen 4
B Array nach Wert prüfen rekursiv Java Basics - Anfänger-Themen 5
sashady Zahlen rekursiv zerlegen und Ziffern addieren Java Basics - Anfänger-Themen 38
jhCDtGVjcZGcfzug Fibonacci Zahlen rekursiv und iterativ Java Basics - Anfänger-Themen 21
H Binominalkoeffizient tail-rekursiv in java darstellen Java Basics - Anfänger-Themen 0
GAZ Tribonacci Folge Rekursiv Java Basics - Anfänger-Themen 11
G Primzahlen von Rekursiv nach Iterativ Java Basics - Anfänger-Themen 6
A Ackermmanfunktion rekursiv Java Basics - Anfänger-Themen 4
A Binärbaum rekursiv durchsuchen und Referenz zurückgeben Java Basics - Anfänger-Themen 4
H Rekursiv Methode ausführen bei Kindern Java Basics - Anfänger-Themen 12
G Methode Rekursiv umschreiben Java Basics - Anfänger-Themen 8
L Jede zweite Ziffer entfernen (rekursiv) Java Basics - Anfänger-Themen 6
J Dateien in Verzeichnissen rekursiv auflisten wirft Exception Java Basics - Anfänger-Themen 4
D Pentagonale Nummern in Rekursiv Java Basics - Anfänger-Themen 14
O Enum Array Rekursiv abarbeiten Java Basics - Anfänger-Themen 44
E Weg-Suche-Problem rekursiv Java Basics - Anfänger-Themen 12
O Primzahl rekursiv mit einem Wert ohne i, wie? Java Basics - Anfänger-Themen 6
E Erste Schritte Potenz Negativ (rekursiv) Java Basics - Anfänger-Themen 2
O Rekursiv aufrufen Java Basics - Anfänger-Themen 2
F In List Rekursiv suchen Java Basics - Anfänger-Themen 12
F Iterativ in Rekursiv Java Basics - Anfänger-Themen 2
S Fibonacci Zahlen rekursiv Java Basics - Anfänger-Themen 1
L Rekursiv zwei Strings vergleichen Java Basics - Anfänger-Themen 3
B Fakultätsfunktion Rekursiv Berechnen aber mit Array Java Basics - Anfänger-Themen 10
J Fibonacci -Folge rekursiv berechnen Java Basics - Anfänger-Themen 18
B Wie kann ich Linien rekursiv zeichnen? Java Basics - Anfänger-Themen 4
kilopack15 Sin(x) rekursiv lösen Java Basics - Anfänger-Themen 17
T Rekursiv Tiefe eines binären Suchbaums ermitteln Java Basics - Anfänger-Themen 22
P Methoden Arrays.AsList kleinste Zahl ausgeben Rekursiv Java Basics - Anfänger-Themen 9
W A hoch N Rekursiv Java Basics - Anfänger-Themen 3
K Rechtecke rekursiv zeichnen Java Basics - Anfänger-Themen 20
V Quadrate rekursiv zeichnen Java Basics - Anfänger-Themen 7
M Fibonacci rekursiv mittels Cache Java Basics - Anfänger-Themen 17
E Binärbaum - von rekursiv zu iterativ Java Basics - Anfänger-Themen 10
Y Rekursiv Palindrom herausfinden Java Basics - Anfänger-Themen 5
B Fibonacci Zahlen rekursiv Array Java Basics - Anfänger-Themen 12
M String rekursiv Spiegeln mit Originalwort davor Java Basics - Anfänger-Themen 3

Ähnliche Java Themen

Neue Themen


Oben