Arreglos: Recursividad ¿Cómo sabemos si está incluido o no? Podemos usar un método de JavaScript que se llama includes. Este método verifica si en la lista ya está registrado ese valor que vamos a pasar como parámetro. En este caso será listaNumerosSorteados.
El método include recorre todo nuestro arreglo y verifica si algo ya existe. Por lo tanto nos devuelve un booleano. Si es true o false. Y recibe como parámetro el valor a verificar. Que en este caso será NúmeroGenerado. Entonces si el número ya existe en la lista, vamos a tener que hacer algo que ya explicaremos. Si no, retornamos ya el valor que fue generado. Porque no existe en la lista. Se puede jugar. Entonces hacemos un return de NúmeroGenerado.
Así es. Aquí aprovechamos ese método que mencionábamos, el método push. El de empujar, de colocar ese elemento al final. Entonces hacemos push del elemento NúmeroGenerado.
Aquí es donde entra el concepto de recursividad. Esta permite que la función se llame a sí misma porque puede generar un resultado válido en una nueva ejecución. Así, se llama a sí misma, que ya tiene toda la lógica, internamente generará un nuevo número, verificará si ya existe, y continuará con el proceso. Nos devolverá el número correcto cuando sea un número que no haya sido sorteado.
Entonces, vamos a llamar a la misma función, solo que agregamos la palabra return para que el valor sea devuelto, ¿de acuerdo? Llamamos a la misma función que se llama generarNumeroSecreto.
Siempre que genere un número existente en la lista, entra en la recursividad, ¿no? Que es llamarse a sí misma para generar un número aleatorio. Y eso es lo importante de la recursividad, es poder reutilizar la funcionalidad que ya tenemos hecha. Porque si no, nos crea un problema complejo muy grande que es tener que crear N funciones para poder cumplir con nuestro objetivo.
Vamos a colocar aquí un console.log para mostrar el número generado y para ver cómo la lista evoluciona y crece.