In The Mail pt-br Explainer

Explicação no correio

Objetivo deste desafio: Completar a função recursiva sendPostcards.

Passo a passo da solução: Neste desafio, você usará uma função recursiva.

Uma função recursiva é uma função que chama a si mesma, fazendo a função funcionar novamente. Isso faz com que a função aja como um laço, já que diz ao computador para executar o mesmo bloco de código repetidamente. A função continuará se chamando até que uma condição final seja atendida. Sem essa condição final, a função não deixará de funcionar

A definição da função sendPostcards não está correta. Ela só envia 1 cartão postal. Precisamos fazer com que a função envie todos os cartões postais usando a recursão.

Dentro da função, uma if statement verifica se amount é 1. Isso é o mesmo que perguntar se deve ser enviado apenas 1 cartão postal. Se apenas 1 cartão postal precisar ser enviado, então devemos apenas imprimir 'All postcards sent' e retornar amount.

Se amount não for 1, mais de 1 cartão postal precisará ser enviado e o bloco else será executado. Ele criará uma nova variável chamada amountRemaining, que é apenas 1 a menos do que amount. Mas como enviamos amountRemaining cartões postais? Bem, poderíamos chamar novamente a função sendPostcards, mas desta vez com amountRemaining!

A parte importante é que cada vez que a função sendPostcards é chamada, há uma verificação imediata para ver se apenas 1 cartão postal precisa ser enviado. O envio de 1 cartão postal é a condição final que impede que a função seja executada para sempre.

Solução do código de exemplo:

(Toque abaixo para revelar)

function sendPostcards(amount) {
    console.log('Postcard ' + amount + ' sent!');
    if (amount === 1) {
        console.log('All postcards sent.');
        return amount;
    } else {
        let amountRemaining = amount - 1;
        console.log('Calling function again.');
        return sendPostcards(amountRemaining);
    }
}

sendPostcards(3);

Conceitos de JavaScript: Bloco de código (função, if statement), console.log(), Recursão, return, Variáveis

1 Like