Estou tentando fazer um exercíco de Linguagens Formais e Autômatos, que é assim:
Implementar uma função recursiva que dado um inteiro n, determina a palavra w em Ʃ={0,1}*. (n indica a posição de w).
Um exemplo de como seria isso, é da seguinte forma.
Ele gera palavras assim:
Digamos que n=8, então as palavras geradas a partir de 0 e 1 é:
{Ɛ, 0,1,00,01,10,11,000,001}
e se eu perguntasse qual é a palavra na posicao 5, ele retornaria 01.
Pois bem, eu estou implementando da seguinte forma:
public class Q01 {
public static void main(String args[]){
System.out.print(gera(8, "0", "1"));
}
private static ArrayList<String> gera(int n, String p, String s){
ArrayList<String> vet = new ArrayList<String>();
vet.add(p);
vet.add(s);
vet.add("");
vet.add("");
int i = vet.size() -1;
int r = 0;
while(r<=n){
//System.out.print(i);
for(int j=0; j<=vet.size();j++){
for(int k=1;k<=vet.size();k++){
vet.set(i, String.valueOf(j) + String.valueOf(k));
vet.add("");
i++;
}
}
}
return vet;
}
}
Sendo que o 8 passado é o valor de n, e as strings 0 e 1, são os valores iniciais para se derivar as palavras. As palavras são derivadas a partir da concatenação dos zeros e uns. Só que quando eu tento executar ele não está gerando as palavras nem imprimindo, ele simplesmente imprime as palavras passadas na chamada e pronto. Acho que nao esta entrando no for. O que pode estar dando errado?
Obrigado.