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 consiste em passar todos os discos de uma extremidade a outra sem que um disco maior fique em cima de um menor.
Fonte: http://pt.wikipedia.org/wiki/Torre_de_Han%C3%B3i
Para solucionar este problema vou utilizar a linguagem C# (Forms), utilizando o Visual Studio 2010 com o framework 4.0.
A função Movimento, é responsavel por contar a quantidades de movimentos e para informar (na forma de string) os passos para a solução:
- private void Movimento(int a, int b)
- {
- sbMovimentos.AppendLine(a + " => " + b);
- count++;
- }
private void Movimento(int a, int b)
{
sbMovimentos.AppendLine(a + " => " + b);
count++;
}
Em seguida utilizaremos uma função recursiva para a solução:
- private void Hanoi(int n, int torreA, int torreB, int torreAuxiliar)
- {
- if (n < 2)
- Movimento(torreA, torreB);
- else
- {
- Hanoi(n - 1, torreA, torreAuxiliar, torreB);
- Movimento(torreA, torreB);
- Hanoi(n - 1, torreAuxiliar, torreB, torreA);
- }
- return;
- }
private void Hanoi(int n, int torreA, int torreB, int torreAuxiliar)
{
if (n < 2)
Movimento(torreA, torreB);
else
{
Hanoi(n - 1, torreA, torreAuxiliar, torreB);
Movimento(torreA, torreB);
Hanoi(n - 1, torreAuxiliar, torreB, torreA);
}
return;
}
Abaixo segue a imagem do programa, onde é solicitado o número de discos e em seguida o programa mostra o script para execução e solução do problema.

Caso deseje obter a solução segue. -> TorreHanoi.rar (26,62 kb)
Fico por aqui. Até a próxima.
Sayonara.
Tags: C#, C#, csharp, csharp, VS, VS, VS2010, Visual Studio, .Net Framework, WinForms, torre de hanói, .Net, VS2010, Visual Studio, .Net Framework, WinForms, torre de hanói, .Net