[AJUDA] Questao Sobre Recursividade e Array ;

Considere um arranjo unidimensional de reais. Nele, um elemento com valor igual a zero indica o término dos valores válidos – o restante do arranjo deve ser ignorado. Construa um método que receba tal arranjo por parâmetro e retorne o número de elementos válidos que ele contém.
Teste o método acima a partir do método principal.
Tenho q fazer esse exercicio de forma recursiva mas n faço a menor ideia.

public class Exercicio5{
   public static void main(String[]args){
      double[] array = {10, 20, 30, -2, 5, 0, 3, 2}; //5 validos;
      double cont = ValoresValidos(array);
      System.out.println("Numero de valores Validos = "+cont);
   }
   public static double ValoresValidos(double[] A){ 
      int i = 0;
      if(A[i] == 0){
         return ?;
      }
      return ValoresValidos(?);
   }
}

vamos la

eu vejo uma forma de fazer isso, VAI QUE É ASSIM…

vc cria 2 versões de ValoresValidos ( que tal chamar isso de “validarValores” hein fera? )

1 versão recebe um array
1 versão recebe um array e um inteiro

a primeira versao recebe o array e chama a segunda com um zero

... validaValores( array ) { return validaValores(array, 0 ); }

... validaValores( array, int indice ) {
  System.out.println("ola, vc chamou o metodo validaValores com indice=" + indice + ", e array[indice] = " + array[indice] );
  if ( array[indice] == 0 ) { return indice; /* adivinha pq? */ }
  
  return validaValores(array, indice + 1 ); /* adivinha pq ?? */
}

tem uns problemas essa implementação. uma delas é que se nao tiver zero vai tudo pra casa do chapeu. mas acho que da pra entender o que isso faz né?

1 curtida