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...

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