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