Draw Boxes With Recursion es-419 Explainer

Explicador de Dibuja cuadros con recursividad

Objetivo de este acertijo:
Este acertijo presenta el concepto de recursión. Actualizarás un arreglo de posibles entradas para que una función incluya 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, choice, se elige al azar del arreglo choice y se usa como un argumento para withRecursion. La función withRecursion toma choice y lo compara con el valor pickAgain. Si choice es pickAgain, entonces se ejecuta el caso recursivo: drawBox() genera un cuadro negro, se dibuja una newLine(), se selecciona nextChoice y withRecursion se llama a sí misma nuevamente con nextChoice como un argumento. Si choice no es pickAgain, se activa el caso base: drawBox() usa el color del valor de of choice para generar un cuadro y la función termina. Como está, el arreglo choices solo consta de valores de color, de modo que el caso recursivo nunca se activa. En este acertijo, agregarás pickAgain al arreglo choices de modo que el caso recursivo se pueda ejecutar.

Para completar el acertijo, agrega pickAgain dos veces al arreglo choices.

Pulsa algunas veces el botón de reproducción en la solución de ejemplo. Cada cuadro ilustra una vez a través de la función; los cuadros negros representan casos recursivos y un cuadro de color representa el caso base.

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

let choices = ['red', 'yellow', 'blue', pickAgain, pickAgain]
let choice = pickRandom(choices)

function withRecursion (choice) {
    if (choice === pickAgain){
        drawBox('black')
        newLine()
        let nextChoice = pickRandom(choices)
        return withRecursion(nextChoice)
    } else {
        return choice
    }
}

drawBox(withRecursion(choice))

Conceptos de JavaScript: variable, función, recursividad
Conceptos de Grasshopper: drawBox(), pickRandom()
Código adicional (código oculto que se ejecuta antes del código del acertijo):

let pickAgain= 'pickAgain'