Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Entfernung der Rekursionen

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
10.03.2006, 19:10 Uhr
~sara4251
Gast


Hallo Leute,
ich habe ein kleines Problem. Ich will die Rekursionen entfenen.
Jeder kennt ja wohl das Problem von Hanoi Tower. Nun aber, gebe ich noch eine beschraenkung. Man soll vom Tower 1 nach Tower 2 die Platten verschieben, man darf aber nicht direkt von 1 nach 2 gehen (oder von 2 nach 1). Natuerlich benutzt man auch den 3.Tower. Ich habe das mit Rekursion gemacht. Benoetigte drei Rekursionen. Nun wollte ich die Rekusion entfernen. Schaffte die letzte und die vorletzte Rekursion zu entfernen(mit hilfe von stack). Weiss aber nicht was ich mit der ersten machen soll. Habe vieles versuch, schaffte es aber nicht.
Danach sollte man sie aller goto loesen, aber das ist ja der zweite Teil. Weiss jemand wie das geht? Mein Programm sieht bis jetzt so aus:


C++:
    
    #include <stack>
#include <iostream>
#include <conio.h>

using namespace std;
int pom;
void Hanoi(int N,int A,int B) {
stack<int> s;
X: while (N!=0) {
    
    
  Hanoi(N-1,A,B);
    cout<<"Von "<<A<<" nach "<<A+B<<endl;
    
    s.push(N); s.push(A); s.push(B);
    N--;pom=B;B=A;A=pom;
    goto X;

  
  }
if(!s.empty()) {
     B=s.top(); s.pop();
     A=s.top(); s.pop();
     N=s.top(); s.pop();
     cout<<"Von "<<A+B<<" nach"<<B<<endl;
    N--;
    goto X;
   }
}


int main() {
  Hanoi(2,1,2);
  getch();
}



mod edit: BENUTZE CPP TAGS SELBER

Dieser Post wurde am 14.03.2006 um 22:37 Uhr von Pablo editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
14.03.2006, 19:26 Uhr
kronos
Quotenfisch
(Operator)


Schau dir mal den an:
http://de.wikipedia.org/wiki/Die_T%C3%BCrme_von_Hanoi#Iterativer_Algorithmus
Wenn du da noch'n if einbaust...
--
main($)??<-$<='?'>>2?main($-!!putchar(
(("$;99M?GD??(??/x0d??/a:???;a"+'?'/4)
??($??)+'?'/3-2-1+$%2)??''?')):'?';??>
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: