Então, eu estava dando uma pesquisada sobre o famoso quebra-cabeça das Torres de Hanói. Achei um algorítmo que resolvia o problema. Acontece que eu estou tendo agora o meu primeiro contato com recursão e não peguei bem o raciocínio da recursão do algoritmo que segue abaixo, gostaria que se alguém pudesse e tivesse a disposição de dar uma breve explicação...
#include <stdio.h>
hanoi (int n, int origem, int auxiliar, int destino)
{
if (n>0)
{
hanoi (n-1,origem,destino,auxiliar);
printf ("Mover de %d para %d\n", origem, destino);
hanoi (n-1,auxiliar,origem,destino);
}
}
main()
{
int num;
printf ("Informe o nº de discos no pino 1: "
scanf ("%d", &num);
hanoi(num,1,2,3);
}
Para quem não sabe do que se trata as Torres de Hanói: http://pt.wikipedia.org/wiki/Torre_de_Hanoi
Link de um joguinho online que ilustra bem o que estamos falando:
http://www.ime.usp.br/~leo/imatica/programas/hanoi/index.html
Abs.