Source: http://slideplayer.com/slide/215436/
Timestamp: 2017-01-20 23:45:30+00:00

Document:
Die Türme von Hanoi Timm Grams Fachhochschule Fulda Fachbereich Elektrotechnik und Informationstechnik © Timm Grams, Fulda, ppt download
Die Türme von Hanoi Timm Grams Fachhochschule Fulda Fachbereich Elektrotechnik und Informationstechnik © Timm Grams, Fulda, 21.11.02.
Published byJayden McNeil
Presentation on theme: "Die Türme von Hanoi Timm Grams Fachhochschule Fulda Fachbereich Elektrotechnik und Informationstechnik © Timm Grams, Fulda, 21.11.02."— Presentation transcript:
Die Türme von Hanoi Timm Grams Fachhochschule Fulda Fachbereich Elektrotechnik und Informationstechnik © Timm Grams, Fulda, 2
Die Türme von Hanoi - Das Problem Gegeben seien drei Pflöcke, die wir mit A, B und C bezeichnen. Zu Beginn stecken auf Pflock A genau n Scheiben. Die Scheiben werden von unten nach oben immer kleiner. Folgende Grundregel ist während des ganzen Spiels einzuhalten: Scheiben werden grundsätzlich auf Pflöcke gesteckt und nie daneben gelegt, und außerdem darf nie eine Scheibe auf einer kleineren liegen. Die Aufgabe lautet, die Scheiben - unter Beachtung der Regel - von Pflock A nach Pflock B zu transportieren. 3
Die Türme von Hanoi ABC 4
Die Türme von Hanoi - Programmidee Die Aufgabe, n Scheiben vom Quellturm zum Zielturm zu transportieren, führt man auf die wohl etwas einfachere Aufgabe für n-1 Scheiben zurück. Also: Man bringt die n-1 obersten Scheiben vom Ziel- auf den Hilfsturm, dann legt man die unterste Scheibe auf den Zielturm und anschließend werden die n-1 Scheiben vom Hilfsturm auf den Zielturm transportiert. Das Problem für n-1 Scheiben behandelt man nun genau so. Man führt es zurück auf den Transport von n-2 Scheiben. Und so weiter. Bis man nur noch eine Scheibe transportieren muss. 5
Die Türme von Hanoi - Programm /*A, B, C: Quell-, Ziel und Hilfsturm*/ void move(char A, char B, char C, int n){ if(n>1) move(A, C, B, n-1); if(n>1) move(A, C, B, n-1); printf("%5d:%c ---> %c\n", n, A, B); printf("%5d:%c ---> %c\n", n, A, B); if (n>1) move(C, B, A, n-1); if (n>1) move(C, B, A, n-1);} void main(){ int n; int n; printf("DIE TUERME VON HANOI\n"); printf("DIE TUERME VON HANOI\n"); printf("? Anzahl Scheiben = "); printf("? Anzahl Scheiben = "); scanf("%d", &n); scanf("%d", &n); move('A', 'B', 'C', n); move('A', 'B', 'C', n);} %c\n", n, A, B); printf("%5d:%c ---> %c\n", n, A, B); if (n>1) move(C, B, A, n-1); if (n>1) move(C, B, A, n-1);} void main(){ int n; int n; printf("DIE TUERME VON HANOI\n"); printf("DIE TUERME VON HANOI\n"); printf("? Anzahl Scheiben = "); printf("? Anzahl Scheiben = "); scanf("%d", &n); scanf("%d", &n); move('A', 'B', 'C', n); move('A', 'B', 'C', n);}">
Zur Visualisierung des Ablaufs Aufbau der folgenden Folien Programmspeicher(Ausschnitt) Befehlszähler(Program Counter, PC) Stapelspeicher (Stack) Für jeden Funktionsaufruf wird ein Funktions- segment (Activation Record) angelegt. Es wird als ein Blatt Papier visualisiert, das auf die bereits daliegenden Papiere gelegt wird. Es enthält die automatischen Variablen für die Parameter und die Rücksprungadresse (RA). Nach Beendigung der Funktion wird der Befehlszähler auf den Wert der Rücksprung- adresse (Return Address, RA) gesetzt und das Segment wird vom Stack entfernt. Die Türme 7
Ablauf Nach Eingabe der Zahl 3 erfolgt im Hauptprogramm der Funktionsaufruf "move('A', 'B', 'C', 3);". Das ergibt die folgende Situation. (Das zuunterst liegende Funktionssegment für das Hauptprogramm ist weggelassen worden. Der weitere Fortgang ist dem Wert des Befehlszählers zu entnehmen.) Befehlszähler(Program Counter, PC) Die Türme Programmspeicher(Ausschnitt) 8
Ablauf void move(char A, char B, char C, int n){ 1: if(n>1) move(A, C, B, n-1); 1: if(n>1) move(A, C, B, n-1); 2: printf("%5d:%c ---> %c\n", n, A, B); 2: printf("%5d:%c ---> %c\n", n, A, B); 3: if (n>1) move(C, B, A, n-1); 3: if (n>1) move(C, B, A, n-1); 4: 4:} A B C A: 'A' B: 'B' C: 'C' n: 3 RA: STOP PC: 1 A: 'A' B: 'C' C: 'B' n: 2 RA: 2 A: 'A' B: 'B' C: 'C' n: 1 RA: 2 %c\n", n, A, B);">
%c\n", n, A, B); 2: printf("%5d:%c ---> %c\n", n, A, B); 3: if (n>1) move(C, B, A, n-1); 3: if (n>1) move(C, B, A, n-1); 4: 4:} A B C A: 'A' B: 'B' C: 'C' n: 3 RA: STOP PC: 1 A: 'A' B: 'C' C: 'B' n: 2 RA: 2 A: 'A' B: 'B' C: 'C' n: 1 RA: 2">
%c\n", n, A, B);" title="Ablauf void move(char A, char B, char C, int n){ 1: if(n>1) move(A, C, B, n-1); 1: if(n>1) move(A, C, B, n-1); 2: printf("%5d:%c ---> %c\n", n, A, B);">
A B C A: 'A' B: 'B' C: 'C' n: 3 RA: STOP PC: 2 A: 'A' B: 'C' C: 'B' n: 2 RA: 2 A: 'A' B: 'B' C: 'C' n: 1 RA: 2Ablauf void move(char A, char B, char C, int n){ 1: if(n>1) move(A, C, B, n-1); 1: if(n>1) move(A, C, B, n-1); 2: printf("%5d:%c ---> %c\n", n, A, B); 2: printf("%5d:%c ---> %c\n", n, A, B); 3: if (n>1) move(C, B, A, n-1); 3: if (n>1) move(C, B, A, n-1); 4: 4:} %c\n", n, A, B); 2: printf("%5d:%c ---> %c\n", n, A, B); 3: if (n>1) move(C, B, A, n-1); 3: if (n>1) move(C, B, A, n-1); 4: 4:}">
A B C A: 'A' B: 'B' C: 'C' n: 3 RA: STOP PC: 3 A: 'A' B: 'C' C: 'B' n: 2 RA: 2 A: 'A' B: 'B' C: 'C' n: 1 RA: 2Ablauf void move(char A, char B, char C, int n){ 1: if(n>1) move(A, C, B, n-1); 1: if(n>1) move(A, C, B, n-1); 2: printf("%5d:%c ---> %c\n", n, A, B); 2: printf("%5d:%c ---> %c\n", n, A, B); 3: if (n>1) move(C, B, A, n-1); 3: if (n>1) move(C, B, A, n-1); 4: 4:} %c\n", n, A, B); 2: printf("%5d:%c ---> %c\n", n, A, B); 3: if (n>1) move(C, B, A, n-1); 3: if (n>1) move(C, B, A, n-1); 4: 4:}">
A B C A: 'A' B: 'B' C: 'C' n: 3 RA: STOP PC: 4 A: 'A' B: 'C' C: 'B' n: 2 RA: 2 A: 'A' B: 'B' C: 'C' n: 1 RA: 2Ablauf void move(char A, char B, char C, int n){ 1: if(n>1) move(A, C, B, n-1); 1: if(n>1) move(A, C, B, n-1); 2: printf("%5d:%c ---> %c\n", n, A, B); 2: printf("%5d:%c ---> %c\n", n, A, B); 3: if (n>1) move(C, B, A, n-1); 3: if (n>1) move(C, B, A, n-1); 4: 4:} %c\n", n, A, B); 2: printf("%5d:%c ---> %c\n", n, A, B); 3: if (n>1) move(C, B, A, n-1); 3: if (n>1) move(C, B, A, n-1); 4: 4:}">
A B C A: 'A' B: 'B' C: 'C' n: 3 RA: STOP PC: 2 A: 'A' B: 'C' C: 'B' n: 2 RA: 2Ablauf void move(char A, char B, char C, int n){ 1: if(n>1) move(A, C, B, n-1); 1: if(n>1) move(A, C, B, n-1); 2: printf("%5d:%c ---> %c\n", n, A, B); 2: printf("%5d:%c ---> %c\n", n, A, B); 3: if (n>1) move(C, B, A, n-1); 3: if (n>1) move(C, B, A, n-1); 4: 4:} %c\n", n, A, B); 2: printf("%5d:%c ---> %c\n", n, A, B); 3: if (n>1) move(C, B, A, n-1); 3: if (n>1) move(C, B, A, n-1); 4: 4:}">
A B C A: 'A' B: 'B' C: 'C' n: 3 RA: STOP PC: 3 A: 'A' B: 'C' C: 'B' n: 2 RA: 2Ablauf void move(char A, char B, char C, int n){ 1: if(n>1) move(A, C, B, n-1); 1: if(n>1) move(A, C, B, n-1); 2: printf("%5d:%c ---> %c\n", n, A, B); 2: printf("%5d:%c ---> %c\n", n, A, B); 3: if (n>1) move(C, B, A, n-1); 3: if (n>1) move(C, B, A, n-1); 4: 4:} %c\n", n, A, B); 2: printf("%5d:%c ---> %c\n", n, A, B); 3: if (n>1) move(C, B, A, n-1); 3: if (n>1) move(C, B, A, n-1); 4: 4:}">
A B C A: 'A' B: 'B' C: 'C' n: 3 RA: STOP PC: 1 A: 'A' B: 'C' C: 'B' n: 2 RA: 2 A: 'B' B: 'C' C: 'A' n: 1 RA: 4Ablauf void move(char A, char B, char C, int n){ 1: if(n>1) move(A, C, B, n-1); 1: if(n>1) move(A, C, B, n-1); 2: printf("%5d:%c ---> %c\n", n, A, B); 2: printf("%5d:%c ---> %c\n", n, A, B); 3: if (n>1) move(C, B, A, n-1); 3: if (n>1) move(C, B, A, n-1); 4: 4:} %c\n", n, A, B); 2: printf("%5d:%c ---> %c\n", n, A, B); 3: if (n>1) move(C, B, A, n-1); 3: if (n>1) move(C, B, A, n-1); 4: 4:}">
A B C A: 'A' B: 'B' C: 'C' n: 3 RA: STOP PC: 2 A: 'A' B: 'C' C: 'B' n: 2 RA: 2 A: 'B' B: 'C' C: 'A' n: 1 RA: 4Ablauf void move(char A, char B, char C, int n){ 1: if(n>1) move(A, C, B, n-1); 1: if(n>1) move(A, C, B, n-1); 2: printf("%5d:%c ---> %c\n", n, A, B); 2: printf("%5d:%c ---> %c\n", n, A, B); 3: if (n>1) move(C, B, A, n-1); 3: if (n>1) move(C, B, A, n-1); 4: 4:} %c\n", n, A, B); 2: printf("%5d:%c ---> %c\n", n, A, B); 3: if (n>1) move(C, B, A, n-1); 3: if (n>1) move(C, B, A, n-1); 4: 4:}">
A B C A: 'A' B: 'B' C: 'C' n: 3 RA: STOP PC: 3 A: 'A' B: 'C' C: 'B' n: 2 RA: 2 A: 'B' B: 'C' C: 'A' n: 1 RA: 4Ablauf void move(char A, char B, char C, int n){ 1: if(n>1) move(A, C, B, n-1); 1: if(n>1) move(A, C, B, n-1); 2: printf("%5d:%c ---> %c\n", n, A, B); 2: printf("%5d:%c ---> %c\n", n, A, B); 3: if (n>1) move(C, B, A, n-1); 3: if (n>1) move(C, B, A, n-1); 4: 4:} %c\n", n, A, B); 2: printf("%5d:%c ---> %c\n", n, A, B); 3: if (n>1) move(C, B, A, n-1); 3: if (n>1) move(C, B, A, n-1); 4: 4:}">
A B C A: 'A' B: 'B' C: 'C' n: 3 RA: STOP PC: 4 A: 'A' B: 'C' C: 'B' n: 2 RA: 2 A: 'B' B: 'C' C: 'A' n: 1 RA: 4Ablauf void move(char A, char B, char C, int n){ 1: if(n>1) move(A, C, B, n-1); 1: if(n>1) move(A, C, B, n-1); 2: printf("%5d:%c ---> %c\n", n, A, B); 2: printf("%5d:%c ---> %c\n", n, A, B); 3: if (n>1) move(C, B, A, n-1); 3: if (n>1) move(C, B, A, n-1); 4: 4:} %c\n", n, A, B); 2: printf("%5d:%c ---> %c\n", n, A, B); 3: if (n>1) move(C, B, A, n-1); 3: if (n>1) move(C, B, A, n-1); 4: 4:}">
A B C A: 'A' B: 'B' C: 'C' n: 3 RA: STOP PC: 4 A: 'A' B: 'C' C: 'B' n: 2 RA: 2Ablauf void move(char A, char B, char C, int n){ 1: if(n>1) move(A, C, B, n-1); 1: if(n>1) move(A, C, B, n-1); 2: printf("%5d:%c ---> %c\n", n, A, B); 2: printf("%5d:%c ---> %c\n", n, A, B); 3: if (n>1) move(C, B, A, n-1); 3: if (n>1) move(C, B, A, n-1); 4: 4:} %c\n", n, A, B); 2: printf("%5d:%c ---> %c\n", n, A, B); 3: if (n>1) move(C, B, A, n-1); 3: if (n>1) move(C, B, A, n-1); 4: 4:}">
A B C A: 'A' B: 'B' C: 'C' n: 3 RA: STOP PC: 2 Ablauf void move(char A, char B, char C, int n){ 1: if(n>1) move(A, C, B, n-1); 1: if(n>1) move(A, C, B, n-1); 2: printf("%5d:%c ---> %c\n", n, A, B); 2: printf("%5d:%c ---> %c\n", n, A, B); 3: if (n>1) move(C, B, A, n-1); 3: if (n>1) move(C, B, A, n-1); 4: 4:} %c\n", n, A, B); 2: printf("%5d:%c ---> %c\n", n, A, B); 3: if (n>1) move(C, B, A, n-1); 3: if (n>1) move(C, B, A, n-1); 4: 4:}">
A B C A: 'A' B: 'B' C: 'C' n: 3 RA: STOP PC: 3 Ablauf void move(char A, char B, char C, int n){ 1: if(n>1) move(A, C, B, n-1); 1: if(n>1) move(A, C, B, n-1); 2: printf("%5d:%c ---> %c\n", n, A, B); 2: printf("%5d:%c ---> %c\n", n, A, B); 3: if (n>1) move(C, B, A, n-1); 3: if (n>1) move(C, B, A, n-1); 4: 4:} %c\n", n, A, B); 2: printf("%5d:%c ---> %c\n", n, A, B); 3: if (n>1) move(C, B, A, n-1); 3: if (n>1) move(C, B, A, n-1); 4: 4:}">
A B C A: 'A' B: 'B' C: 'C' n: 3 RA: STOP PC: 1 A: 'C' B: 'B' C: 'A' n: 2 RA: 4Ablauf void move(char A, char B, char C, int n){ 1: if(n>1) move(A, C, B, n-1); 1: if(n>1) move(A, C, B, n-1); 2: printf("%5d:%c ---> %c\n", n, A, B); 2: printf("%5d:%c ---> %c\n", n, A, B); 3: if (n>1) move(C, B, A, n-1); 3: if (n>1) move(C, B, A, n-1); 4: 4:} %c\n", n, A, B); 2: printf("%5d:%c ---> %c\n", n, A, B); 3: if (n>1) move(C, B, A, n-1); 3: if (n>1) move(C, B, A, n-1); 4: 4:}">
A B C A: 'A' B: 'B' C: 'C' n: 3 RA: STOP PC: 1 A: 'C' B: 'B' C: 'A' n: 2 RA: 4 A: 'C' B: 'A' C: 'B' n: 1 RA: 2Ablauf void move(char A, char B, char C, int n){ 1: if(n>1) move(A, C, B, n-1); 1: if(n>1) move(A, C, B, n-1); 2: printf("%5d:%c ---> %c\n", n, A, B); 2: printf("%5d:%c ---> %c\n", n, A, B); 3: if (n>1) move(C, B, A, n-1); 3: if (n>1) move(C, B, A, n-1); 4: 4:} %c\n", n, A, B); 2: printf("%5d:%c ---> %c\n", n, A, B); 3: if (n>1) move(C, B, A, n-1); 3: if (n>1) move(C, B, A, n-1); 4: 4:}">
A B C A: 'A' B: 'B' C: 'C' n: 3 RA: STOP PC: 2 A: 'C' B: 'B' C: 'A' n: 2 RA: 4 A: 'C' B: 'A' C: 'B' n: 1 RA: 2Ablauf void move(char A, char B, char C, int n){ 1: if(n>1) move(A, C, B, n-1); 1: if(n>1) move(A, C, B, n-1); 2: printf("%5d:%c ---> %c\n", n, A, B); 2: printf("%5d:%c ---> %c\n", n, A, B); 3: if (n>1) move(C, B, A, n-1); 3: if (n>1) move(C, B, A, n-1); 4: 4:} %c\n", n, A, B); 2: printf("%5d:%c ---> %c\n", n, A, B); 3: if (n>1) move(C, B, A, n-1); 3: if (n>1) move(C, B, A, n-1); 4: 4:}">
A B C A: 'A' B: 'B' C: 'C' n: 3 RA: STOP PC: 3 A: 'C' B: 'B' C: 'A' n: 2 RA: 4 A: 'C' B: 'A' C: 'B' n: 1 RA: 2Ablauf void move(char A, char B, char C, int n){ 1: if(n>1) move(A, C, B, n-1); 1: if(n>1) move(A, C, B, n-1); 2: printf("%5d:%c ---> %c\n", n, A, B); 2: printf("%5d:%c ---> %c\n", n, A, B); 3: if (n>1) move(C, B, A, n-1); 3: if (n>1) move(C, B, A, n-1); 4: 4:} %c\n", n, A, B); 2: printf("%5d:%c ---> %c\n", n, A, B); 3: if (n>1) move(C, B, A, n-1); 3: if (n>1) move(C, B, A, n-1); 4: 4:}">
A B C A: 'A' B: 'B' C: 'C' n: 3 RA: STOP PC: 4 A: 'C' B: 'B' C: 'A' n: 2 RA: 4 A: 'C' B: 'A' C: 'B' n: 1 RA: 2Ablauf void move(char A, char B, char C, int n){ 1: if(n>1) move(A, C, B, n-1); 1: if(n>1) move(A, C, B, n-1); 2: printf("%5d:%c ---> %c\n", n, A, B); 2: printf("%5d:%c ---> %c\n", n, A, B); 3: if (n>1) move(C, B, A, n-1); 3: if (n>1) move(C, B, A, n-1); 4: 4:} %c\n", n, A, B); 2: printf("%5d:%c ---> %c\n", n, A, B); 3: if (n>1) move(C, B, A, n-1); 3: if (n>1) move(C, B, A, n-1); 4: 4:}">
A B C A: 'A' B: 'B' C: 'C' n: 3 RA: STOP PC: 2 A: 'C' B: 'B' C: 'A' n: 2 RA: 4Ablauf void move(char A, char B, char C, int n){ 1: if(n>1) move(A, C, B, n-1); 1: if(n>1) move(A, C, B, n-1); 2: printf("%5d:%c ---> %c\n", n, A, B); 2: printf("%5d:%c ---> %c\n", n, A, B); 3: if (n>1) move(C, B, A, n-1); 3: if (n>1) move(C, B, A, n-1); 4: 4:} %c\n", n, A, B); 2: printf("%5d:%c ---> %c\n", n, A, B); 3: if (n>1) move(C, B, A, n-1); 3: if (n>1) move(C, B, A, n-1); 4: 4:}">
A B C A: 'A' B: 'B' C: 'C' n: 3 RA: STOP PC: 3 A: 'C' B: 'B' C: 'A' n: 2 RA: 4Ablauf void move(char A, char B, char C, int n){ 1: if(n>1) move(A, C, B, n-1); 1: if(n>1) move(A, C, B, n-1); 2: printf("%5d:%c ---> %c\n", n, A, B); 2: printf("%5d:%c ---> %c\n", n, A, B); 3: if (n>1) move(C, B, A, n-1); 3: if (n>1) move(C, B, A, n-1); 4: 4:} %c\n", n, A, B); 2: printf("%5d:%c ---> %c\n", n, A, B); 3: if (n>1) move(C, B, A, n-1); 3: if (n>1) move(C, B, A, n-1); 4: 4:}">
A B C A: 'A' B: 'B' C: 'C' n: 3 RA: STOP PC: 1 A: 'C' B: 'B' C: 'A' n: 2 RA: 4 A: 'A' B: 'B' C: 'C' n: 1 RA: 4Ablauf void move(char A, char B, char C, int n){ 1: if(n>1) move(A, C, B, n-1); 1: if(n>1) move(A, C, B, n-1); 2: printf("%5d:%c ---> %c\n", n, A, B); 2: printf("%5d:%c ---> %c\n", n, A, B); 3: if (n>1) move(C, B, A, n-1); 3: if (n>1) move(C, B, A, n-1); 4: 4:} %c\n", n, A, B); 2: printf("%5d:%c ---> %c\n", n, A, B); 3: if (n>1) move(C, B, A, n-1); 3: if (n>1) move(C, B, A, n-1); 4: 4:}">
A B C A: 'A' B: 'B' C: 'C' n: 3 RA: STOP PC: 2 A: 'C' B: 'B' C: 'A' n: 2 RA: 4 A: 'A' B: 'B' C: 'C' n: 1 RA: 4Ablauf void move(char A, char B, char C, int n){ 1: if(n>1) move(A, C, B, n-1); 1: if(n>1) move(A, C, B, n-1); 2: printf("%5d:%c ---> %c\n", n, A, B); 2: printf("%5d:%c ---> %c\n", n, A, B); 3: if (n>1) move(C, B, A, n-1); 3: if (n>1) move(C, B, A, n-1); 4: 4:} %c\n", n, A, B); 2: printf("%5d:%c ---> %c\n", n, A, B); 3: if (n>1) move(C, B, A, n-1); 3: if (n>1) move(C, B, A, n-1); 4: 4:}">
A B C A: 'A' B: 'B' C: 'C' n: 3 RA: STOP PC: 3 A: 'C' B: 'B' C: 'A' n: 2 RA: 4 A: 'A' B: 'B' C: 'C' n: 1 RA: 4Ablauf void move(char A, char B, char C, int n){ 1: if(n>1) move(A, C, B, n-1); 1: if(n>1) move(A, C, B, n-1); 2: printf("%5d:%c ---> %c\n", n, A, B); 2: printf("%5d:%c ---> %c\n", n, A, B); 3: if (n>1) move(C, B, A, n-1); 3: if (n>1) move(C, B, A, n-1); 4: 4:} %c\n", n, A, B); 2: printf("%5d:%c ---> %c\n", n, A, B); 3: if (n>1) move(C, B, A, n-1); 3: if (n>1) move(C, B, A, n-1); 4: 4:}">
A B C A: 'A' B: 'B' C: 'C' n: 3 RA: STOP PC: 4 A: 'C' B: 'B' C: 'A' n: 2 RA: 4 A: 'A' B: 'B' C: 'C' n: 1 RA: 4Ablauf void move(char A, char B, char C, int n){ 1: if(n>1) move(A, C, B, n-1); 1: if(n>1) move(A, C, B, n-1); 2: printf("%5d:%c ---> %c\n", n, A, B); 2: printf("%5d:%c ---> %c\n", n, A, B); 3: if (n>1) move(C, B, A, n-1); 3: if (n>1) move(C, B, A, n-1); 4: 4:} %c\n", n, A, B); 2: printf("%5d:%c ---> %c\n", n, A, B); 3: if (n>1) move(C, B, A, n-1); 3: if (n>1) move(C, B, A, n-1); 4: 4:}">
A B C A: 'A' B: 'B' C: 'C' n: 3 RA: STOP PC: 4 A: 'C' B: 'B' C: 'A' n: 2 RA: 4Ablauf void move(char A, char B, char C, int n){ 1: if(n>1) move(A, C, B, n-1); 1: if(n>1) move(A, C, B, n-1); 2: printf("%5d:%c ---> %c\n", n, A, B); 2: printf("%5d:%c ---> %c\n", n, A, B); 3: if (n>1) move(C, B, A, n-1); 3: if (n>1) move(C, B, A, n-1); 4: 4:} %c\n", n, A, B); 2: printf("%5d:%c ---> %c\n", n, A, B); 3: if (n>1) move(C, B, A, n-1); 3: if (n>1) move(C, B, A, n-1); 4: 4:}">
A B C A: 'A' B: 'B' C: 'C' n: 3 RA: STOP PC: 4 Ablauf void move(char A, char B, char C, int n){ 1: if(n>1) move(A, C, B, n-1); 1: if(n>1) move(A, C, B, n-1); 2: printf("%5d:%c ---> %c\n", n, A, B); 2: printf("%5d:%c ---> %c\n", n, A, B); 3: if (n>1) move(C, B, A, n-1); 3: if (n>1) move(C, B, A, n-1); 4: 4:} %c\n", n, A, B); 2: printf("%5d:%c ---> %c\n", n, A, B); 3: if (n>1) move(C, B, A, n-1); 3: if (n>1) move(C, B, A, n-1); 4: 4:}">
A B C PC: STOP Ablauf void move(char A, char B, char C, int n){ 1: if(n>1) move(A, C, B, n-1); 1: if(n>1) move(A, C, B, n-1); 2: printf("%5d:%c ---> %c\n", n, A, B); 2: printf("%5d:%c ---> %c\n", n, A, B); 3: if (n>1) move(C, B, A, n-1); 3: if (n>1) move(C, B, A, n-1); 4: 4:} Das war's %">
%c\n", n, A, B); 2: printf("%5d:%c ---> %c\n", n, A, B); 3: if (n>1) move(C, B, A, n-1); 3: if (n>1) move(C, B, A, n-1); 4: 4:} Das war's">
%" title="A B C PC: STOP Ablauf void move(char A, char B, char C, int n){ 1: if(n>1) move(A, C, B, n-1); 1: if(n>1) move(A, C, B, n-1); 2: printf("%5d:%c ---> %">
So sieht die Sache jetzt aus ABC 36
Ende des Foliensatzes Download ppt "Die Türme von Hanoi Timm Grams Fachhochschule Fulda Fachbereich Elektrotechnik und Informationstechnik © Timm Grams, Fulda, 21.11.02."
Similar presentations Prof. Dr. Herbert Göttler Johannes Gutenberg-Universität, Mainz Visualisierung der Funktionsweise des Programms auf S. 9 des Skripts.
Diskrete Mathe Diskrete Mathematik I Rekursion Vorlesung 3.
Präsentation Baulandbewertung Präsentation am Institut für Stadt- und Regionalforschung Versuch einer Baulandbewertung.
HERZLICH WILLKOMMEN ZUM DFB ELTERN-ABEND DFB STÜTZPUNKT SCHLOßBERG A.Schreffl P.Steinberger.
Tastatur Esc F1F2F3F4F5F6F7F8F9 F10F11F12 DruckPause Rollen  Num  Rollen WRTZUIOPÜ °^°^ !1!1  „ 2 2 &6&6 $4$4 %5%5 / 7 { ( 8 [ ) 9 ] = 0 } ? ß \ `´`´
Smart 2 Unit 6 It’s our world! – Crossword puzzle.
1 Übung 1 Löse folgendes Erfüllbarkeitsproblem mit dem Davis-Putnam-Algorithmus! (r s) (¬p q) (¬r s) (¬q p) (¬r ¬s p) (¬p ¬q r) (¬p ¬q ¬r) ¬p¬p p ¬q (unit)
Die rückgedeckte Unterstützungskasse Informationen für den Arbeitnehmer.
Formate der betrieblicher Weiterbildung AußensteuerungSelbststeuerung Lernen in nicht- problematischen Berufs- und Lebenssituationen berufliches, privates,
© NFA, Neuromuscular Functional Assessment: Funktionelle Neurologie und Rehabilitation, Hans Garten, 2013 Hemistim rechtshemisphärisch Setzen Sie sich.
Das steht auf einem anderen Blatt. Thats a different story. / Thats a horse of a different color. (Meaning – That is a different matter) Literal German:
7.3 Lektion 7 Wissenschaft und Technologie STRUKTUREN © and ® 2012 Vista Higher Learning, Inc Adverbs Er ist bereits eingetroffen. Adverbs modify.
Prep for Test 5 Unit 4. a b a b Tranlsate into English:
Banner printing / Bannerdruck ineo + 250/350/450/P Firmware 2.0 PS-Driver Version 2.0.
Migration in die Cloud – so gelingt ein nachhaltiger Umstieg.
§37 and §38 Things to come RfE 21 §37Future with to be going to1 2 3 §38Future with to will §37 and §38mixed exercises Index.

References: §37
 §38
 §37
 §38
 §37
 §38