A Recursive Roll pt-br Explainer

Explicação de Um lançamento recursivo

Objetivo deste desafio: Este desafio introduz o conceito de recursão. Você atualizará uma função e suas arrays de entradas possíveis para incluir uma entrada que faça a função ser executada novamente.

Passo a passo da solução: Recursão é quando uma função se chama repetidamente de dentro de seu próprio bloco de código até que uma condição final seja atendida (conhecida como caso básico).

No código com o qual você começa, um valor, roll, é escolhido aleatoriamente da array rolls e usado como argumento para as funções withRecursion e noRecursion. A função noRecursion usa roll e simplesmente a devolve. A função withRecursion pega roll e compara com o valor 7. Se roll é 7, 'You rolled a 7. Rolling again…' é produzido, nextRoll é selecionado e noRecursion é chamada usando nextRoll como argumento. Se roll não for 7, então é retornado roll. Como está, a função withRecursion está incorreta e a array rolls não tem o número 7. Neste desafio, você adicionará 7 à array rolls e atualizará o comando de retorno dentro de withRecursion para torná-la recursiva.

Para concluir o desafio, adicione 7 duas vezes à array rolls e mude o comando de retorno dentro de withRecursion de noRecursion(nextRoll) para withRecursion(nextRoll).

Toque algumas vezes no botão Reproduzir na Solução exemplo. É possível ver a diferença entre um roll que aterrissa em 7 usando noRecursion e withRecursion. A função noRecursion simplesmente retorna 7, enquanto withRecursion volta sempre que aterrissa em 7 e continua funcionando até que roll não seja 7.

Solução do código de exemplo:
(Toque abaixo 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))

Conceitos de JavaScript: Variável, Função, Recursão

Conceitos do Grasshopper: pickRandom()