Problema: Lenguaje C-Torres Hanoi con funcion recursiva

Hola de nuevo, pues tengo que hacer un ejercicio: un programa que solucione el problema de las torres de Hanoi mediante la recursividad.

Se pedira al principio el tamaño de la torre O (entendiendo que tendrá el número de discos indicados, con algún límite preestablecido). Las torres A y D estarán inicialmente vacías.

Bueno, pongo el programa, pero falta la funcion recursiva (que la estoy pensando):

#include<stdio.h>
#include<stdlib.h>
#define MAX 6
#define SO 0//1 Linux, 0 Windows

void inicializarHanoi(int *O,int *A,int *D,int discos);
int imprimeTorres(int *O,int *A,int *D,int discos);
int resolverHanoi(int *O,int *A,int *D,int discos);

main()
{
   int discos,O[MAX],A[MAX],D[MAX];
   printf("Torres Hanoi Guillermo Ferrer\n");
   printf("Introduce num. de discos: (MAX 6)\n");
   scanf("%d",&discos);
   printf("\n");
   inicializarHanoi(O,A,D,discos);
   imprimeTorres(O,A,D,discos);
   resolverHanoi(O,A,D,discos);
}

void inicializarHanoi(int *O,int *A,int *D,int discos)
{
   int cont;
   for(cont=0;cont<=discos;cont++)
   {
      O[cont]=cont;
   }
   for(cont=0;cont<=discos;cont++)
   {
      A[cont]=0;
   }
   for(cont=0;cont<=discos;cont++)
   {
      D[cont]=0;
   }
}

imprimeTorres(int *O,int *A,int *D,int discos)
{
   int cont,cont2=0;

   for(cont=0;cont<=discos;cont++)
   {
      for(cont2=O[cont]-cont2;cont2>0;cont2--)
      {
         printf(" ");
      }
      for(cont2=0;cont2<cont;cont2++)
      {
         printf("*");
      }
      printf("\n");
   }
//   printf("HASTA AQUI\n");
   printf("----Torre O----\n");
   
   for(cont=0;cont<=discos;cont++)
   {
      for(cont2=0;cont2<A[cont];cont2++)
      {
         printf("*");
      }
      printf("\n");
   }
//   printf("HASTA AQUI\n");
   printf("----Torre A----\n");   
   for(cont=0;cont<=discos;cont++)
   {
      for(cont2=0;cont2<D[cont];cont2++)
      {
         printf("*");
      }
      printf("\n");
   }
   printf("----Torre D----\n");   
   if(SO==1)
   {
      system("sleep 2"); //¿?
      system("clear");
   }
   else
   {
      system("pause");
      system("cls");
   }
}

int resolverHanoi(int *O,int *A,int *D,int discos) //esa funcion falta
{
   if(discos==1)
      
   else
   {
   
   }
   imprimeTorres(O,A,D,discos);
}



no es mucho, pero si me dan algun consejo o algo, seran bienvenidos, sino... igual... XD

Creo que habria que crear la funcion recursiva y llamar de 3 formas distintas (distintos parametros) a la misma dependiendo el caso...
0 respuestas