C/Visual C - Problema Con funcion Recursiva

 
Vista:

Problema Con funcion Recursiva

Publicado por az (1 intervención) el 16/07/2011 01:45:44
Hoy estaba programando un codigo generador de secuencias, lo que seria un algoritmo de fuerza bruta. En teoria lo que quiero es que genere todas las posibles combinaciones de X caracteres siendo X variable,Asi deberia sacar por pantalla una cosa asi(lo pongo con puntos suspensivos porque serian demasiadas secuencias):
0
1
...
Y
Z
00
01
02
...
ZX
ZY
ZZ
....
000
001
etc etc
Aqui va el codigo:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
#include <stdio.h>
#include <stdlib.h>
#define tama 5
#define abc 62
 
void ini_dic(char *punt)
     {
       int i;
       *punt='0';
       for (i=1;i<10;i++)
           {
           *(punt+i)=*(punt+i-1)+1;
           }
       *(punt+10)='a';
       for(i=11;i<36;i++)
           {
           *(punt+i)=*(punt+i-1)+1;
           }
       *(punt+36)='A';
       for(i=37;i<abc;i++)
           {
           *(punt+i)=*(punt+i-1)+1;
           }
     }
 
 
 
 
void recursiva(char *vect,char *dicc,int i,int j)
   {
    int z,x;
 
    for(z=0;z<abc;z++)
       {
       *(vect+i)=*(dicc+z);
       for(x=0;x<=j;x++)
           {
             printf("%c",*(vect+x));
           }
         printf("\n");
       if(i>0)
         {
           i--;
           recursiva(vect,dicc,i,j);
         }
       }
   }
 
int main()
    {
    char *vector;
    char dicc[abc];
    int i,j;
 
    ini_dic(dicc);
 
  for(i=1;i<=tama;i++)
    {
     vector = (char *) malloc(sizeof(char)*i);
 
     for (j=0;j<i;j++)
         {
         vector[j]=dicc[0];
         }
    j=i-1;
    recursiva(vector,dicc,j,j);
    free(vector);
    system("pause");
    }
}


El problema es que sale de la recursiva demasiado pronto y si lo llegais a compilar vereis que no saca por pantalla todas las combinaciones de caracteres. Si alguien sabe porque se lo agradeceria
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder