Categorias

Algoritmo para solucionar a Torre de Hanoi em C

O algoritmo a seguir funciona de maneira para solucionar a Torre de Hanoi.

Para quem não conhece, a Torre de Hanói é um “quebra-cabeça” que consiste em uma base contendo três pinos, em um dos quais são dispostos alguns discos uns sobre os outros, em ordem crescente de diâmetro, de cima para baixo.

O problema consiste em passar todos os discos de um pino para outro qualquer, usando um dos pinos como auxiliar, de maneira que um disco maior nunca fique em cima de outro menor em nenhuma situação. O número de discos pode variar sendo que o mais simples contém apenas três.

A Torre de Hanói tem sido tradicionalmente considerada como um procedimento para avaliação da capacidade de memória de trabalho, e principalmente de planejamento e solução de problemas.

A Torre de Hanói possui várias formas de resolução. Uma delas é a resolução recursiva a qual podemos dizer que é a mais limitada quanto ao tempo de realização, já que sua execução dependerá de alguns fatores para tornar-se mais eficaz.

A resolução Iterativa utiliza alguns ciclos (estruturas) de repetição (for, whiles), existe ainda a possibilidade de algumas estruturas adicionais (mais complexas) as quais tornam o algoritmo mais rápido.

É fato que todo algoritmo recursivo possui um algoritmo interativo equivalente; Dependendo apenas da sua complexidade de construção.

int movetorre (int N,char orig, char dest, char aux){
     if(N==1)
             cont=cont+1;
     else{
           movetorre(N-1,orig,aux,dest);
           cont=cont+1;
           movetorre(N-1,orig,aux,dest);
         }  
         
}

Arquivos para Download:

torre de hanoi.cpp