/*Programa recursivo que calcula o problema TORRE de HANOI*/
/*Brivaldo Jr - 21/04/2004*/

#include <stdio.h>
#include <stdlib.h>
#include <time.h>


void torre_hanoi(char a, char b, char c, int discos);

int main(int argc, char *argv[])
{
  char vet[3]={'A', 'B', 'C'};
  clock_t ini, end;
  
  if(argc<2)
    {
      printf("\nEntrada:\nhanoi <N° de discos>\n\n");
      exit(0);
    }
  ini=clock();
  torre_hanoi(vet[0],vet[1],vet[2],atoi(argv[1]));
  end=clock();
  printf("\nTempo: %.3f\n\n",((double)(end-ini))/CLOCKS_PER_SEC);

  return 0;
}


void torre_hanoi(char a, char b, char c, int discos)
{
  if(discos>0)
    {
      torre_hanoi(a,c,b,discos-1);
      printf("\n%c -> %c",a,c);
      torre_hanoi(b,a,c,discos-1);
    }
  return;
}
