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:
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
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
0