Bom dia || boa tarde || boa noite, eu sou um novato em programação e tenho uma dúvida referente a um método recursivo para contar caracteres em uma matriz, sendo que ela possui caracteres misturados. Porém eu estou tendo problemas com os meus pontos de parada, acho eu…
private int ContaChar(int line, int column, String direction) {
return ContaCharR(line, column, 1, direction);
}
private int ContaCharR(int line, int column, int units, String direction) {
// valida se a posição já foi revelada, se foi revelada deve continuar
// procurando.
// Esse ponto de parada, já dá um erro pelo debugger,
//mas como deveria ser a condição para ele só desconsiderar
//essa posição e seguir em frente?
if (isPosicaoRevelada(line, column)) {
return ContaChar(line, column, direction);
}
// Se ainda não havia sido revelada, é revelada.
matrizBoolean[line][column] = true;
// Vê se o caractere é igual ao passado por parâmetro
// direction significa para onde a recursão está indo.
if (isCaractereIgual(line, column, direction)) {
// Se é o mesmo caractere vai começar a procurar vizinho idênticos.
// (I) linha atual -1, coluna atual
if (line- 1 >= 0 && line- 1 < matriz.length) {
if (column>= 0 && column< matriz[line- 1].length) {
return ContaCharR(line- 1, column, units + 1, "Cima");
}
}
// (II) linha atual + 1, coluna atual;
if (line+ 1 >= 0 && line+ 1 < matriz.length) {
if (column>= 0 && column< matriz[line+ 1].length) {
return ContaCharR(line+ 1, column, units + 1, "Baixo");
}
}
// (III) linha atual, coluna atual – 1;
if (line>= 0 && line< matriz.length) {
if (column- 1 >= 0 && column- 1 < matriz[line].length) {
return ContaCharR(line, column- 1, units + 1, "Esquerda");
}
}
// (IV) linha atual, coluna atual + 1.
if (line>= 0 && line< matriz.length) {
if (column+ 1 >= 0 && column+ 1 < matriz[line].length) {
return ContaCharR(line, column+ 1, units+ 1, "Direita");
}
}
}
return units;
}
Será que poderiam me dar uma ajuda?
Agradeço desde já!
