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.