A Recursive Roll es-419 Explainer

Explicador de Un lanzamiento recursivo

Objetivo de este acertijo:
Este acertijo introduce el concepto de recursión. Actualizarás una función y su arreglo de posibles entradas para incluir una entrada que haga que la función se ejecute de nuevo.

Tutorial de la solución:
La recursión es una función que se llama de forma reiterativa desde dentro de su propio bloque de código hasta que se cumpla una condición final (esto se conoce como caso base).

En el código con el que comienzas, un valor, roll, se elige al azar del arreglo rolls y se usa como un argumento para las funciones withRecursion y noRecursion. La función noRecursion toma roll y simplemente lo devuelve. La función withRecursion toma roll y lo compara con el valor 7. Si roll es 7, 'You rolled a 7. Rolling again…' es el resultado, se selecciona nextRoll y se llama a noRecursion usando nextRoll como un argumento. Si roll no es 7, entonces roll se devuelve. Como está, la función withRecursion es incorrecta y el arreglo rolls no tiene un 7. En este acertijo, agregarás 7 al arreglo rolls y actualizarás la declaración return withRecursion para que se repita.

Para completar el acertijo, agrega 7 dos veces al arreglorolls y cambia la declaración return dentro de withRecursion de noRecursion(nextRoll) a withRecursion(nextRoll).

Pulsa el botón Reproducir en la solución de ejemplo algunas veces. Puedes ver la diferencia entre un roll que cae en 7 usando noRecursion y withRecursion. La función noRecursion simplemente devuelve 7, mientras que withRecursion se vuelve a ejecutar cada vez que cae en 7 y sigue ejecutándose hasta que roll no sea 7.

Solución del código de ejemplo:
(Pulsa a continuación para revelar)

let rolls = [1, 2, 3, 4, 7, 7]
let roll = pickRandom(rolls)

function withRecursion (roll) {
    if (roll === 7 ){
        console.log('You landed on 7. Rolling again...')
        let nextRoll = pickRandom(rolls)
        return withRecursion(nextRoll)
    } else {
        return roll
    }
}

function noRecursion (roll){
    return roll
}

console.log('You rolled a: ' + withRecursion(roll))
console.log(newLine())
console.log('You rolled a: ' + noRecursion(roll))

Conceptos de JavaScript: variable, función, recursividad
Conceptos de Grasshopper: pickRandom()