Ver Mensaje Individual
  #1 (permalink)  
Antiguo 27/12/2008, 14:44
Joaquin_Phi
 
Fecha de Ingreso: julio-2008
Mensajes: 18
Antigüedad: 15 años, 9 meses
Puntos: 0
Torres de Hanoi

Saludos, intento comprender el funcionamiento del siguiente ejercicio que encontre en internet sobre las Torres de Hanoi para n discos, utilizando el Tema Recursividad.

Cita:
void hanoi(int n,char com, char aux, char fin);

void main(void){

char com='A';
char aux='B';
char fin='C';
int n;

cout<<"Numero de discos: ";
cin>>n;
fflush(stdin);

cout<<"Los movimientos a realizar son: "<<endl;

hanoi(n,com,aux,fin);
}

void hanoi(int n,char com, char aux, char fin){

if(n==1){
cout<<com<<"->"<<fin<<endl;
}
else{
hanoi(n-1,com,fin,aux);
cout<<com<<"->"<<fin<<endl;
hanoi(n-1,aux,com,fin);

}
}
No he podido seguir el proceso por medio del cual se generan los resultados, por ejemplo, para n = 3 se tiene que las soluciones son:

A --> C
A --> B
C --> B
A --> C
B --> A
B --> C
A --> C

Y me parece el desarrollo incial es el siguiente:

hanoi(3,A,B,C);
else
hanoi( 2,A,C,B)
else
hanoi(1,A,C,B)
if(n==1){
cout<<A<<"-->"<<B<<endl;
Pero aqui deberia ser A --> C.

Agradeceria si alguien explicara la manera en que se desarrollan las soluciones, al menos las primeras de manera de entender las siguientes.

Gracias por la ayuda.