Este código Java permite recorrer recursivamente una lista (o cualquier otra colección análoga) sin usar bucles tradicionales (for, while, etc.)
Normalmente será preferible un recorrido con un iterador, bucle for tradicional, etc. pero en ocasiones nos puede interesar operar recursivamente.
import java.util.ArrayList;
import java.util.Arrays;
public class recorridoRecursivo {
//Recorrido recursivo ejemplo aprenderaprogramar.com
public static void recorridoRecursivo (ArrayList<Integer> lista, int indiceActual) {
if (indiceActual == lista.size()-1) { System.out.println ("Ultimo elemento..."+lista.get(indiceActual)); }
else {
System.out.println("Leyendo... " + lista.get(indiceActual));
recorridoRecursivo(lista, indiceActual+1);
}
}
public static int numeroDeSietes (ArrayList<Integer> lista, int indiceActual, int contador) {
if(lista.get(indiceActual) == 7) {contador= contador+1;}
if (indiceActual == lista.size()-1) { return contador; }
else { return numeroDeSietes(lista, indiceActual+1, contador); }
}
public static void main (String[] args) {
Integer [] listado = {3, 4, 1, 7, 3, 5, 7, 9, 4, 7} ;
ArrayList <Integer> listadoNumeros = new ArrayList<Integer> (Arrays.asList(listado));
System.out.println ("listadoNumeros contiene " + listadoNumeros);
System.out.println ("RECORRIDO SIN BUCLES (RECURSIVO)");
recorridoRecursivo(listadoNumeros, 0);
System.out.println ("RECORRIDO SIN BUCLES (RECURSIVO) CONTANDO ELEMENTOS QUE CUMPLEN UNA CONDICIÓN");
System.out.println ("El número de sietes en la lista es " + numeroDeSietes (listadoNumeros, 0, 0));
}
}