domingo, 22 de julho de 2012

Algorítimo Torre de Hanói implementado em C#



Neste tutorial vou mostrar como implementar o algorítimo da torre de Hanói usando recursividade em C# console.


using System;
using System.Collections.Generic;
using System.Text;
using System.Diagnostics;
namespace TorreHanoiConsole
{
class Program
{
static Stopwatch watch = new Stopwatch();
static double cont;
static void Main(string[] args)
{
Program programa = new Program();
programa.Inicio();
}
private void Inicio()
{
Console.WriteLine("Entre com numero de discos");
double numero = double.Parse(Console.ReadLine());
watch.Start();
cont = 0;
moverTorre(numero, 'A', 'C', 'B');
watch.Stop();
Console.WriteLine("\nEste é o Numero de Discos: " + numero);
Console.WriteLine("\nTempo levado em ms: " + watch.ElapsedMilliseconds);
Console.WriteLine("\nNumero de Movimentos: " + cont);
Console.ReadLine();
}
private void moveUmDisco(char inicio, char fim)
{
cont = cont + 1;
Console.WriteLine(Convert.ToString("\n" + inicio + " " + fim) + " Numero Movimentos = " + cont);
}
private void moverTorre(double n, char inicio, char fim, char temp)
{
if (n == 1)
{
moveUmDisco(inicio, fim);
}
else
{
moverTorre(n - 1, inicio, temp, fim);
moveUmDisco(inicio, fim);
moverTorre(n - 1, temp, fim, inicio);
}
}
}

Nenhum comentário:

Postar um comentário