Recursion Replacement pt-br Explainer

Explicação de Substituição de recursão

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

Passo a passo da solução: A definição da função updateAllNames não está correta. Ela apenas substitui o 1º erro ortográfico, que é a mesma coisa que o método .replace() regular faz. Precisamos fazer com que a função substitua todos os erros ortográficos.

A 1ª parte da função é uma If Statement que verifica se a string não inclui erros ortográficos. Isso é o mesmo que perguntar se todos os erros ortográficos desapareceram. Se não houver erros ortográficos, devemos apenas return (retornar) a string porque todo o trabalho está feito. Se essa verificação falhar, então ainda temos erros ortográficos a corrigir.

A próxima linha faz um .replace() para corrigir o primeiro erro ortográfico que encontrar. Agora nossa string está um pouco melhor, pois tem 1 erro ortográfico a menos. Mas ainda pode haver erros ortográficos. Devemos fazer algo para verificar se terminamos ou se há mais erros ortográficos a serem corrigidos. Surpreendentemente, temos uma função que já verifica se a string não contém erros ortográficos, caso contrário corrige 1 erro ortográfico - a função updateAllNames que estamos analisando!

Depois de termos feito nossa .replace() (substituição), devemos chamar a função updateAllNames() e return (retornar) o valor: return updateAllNames(string, oldPart, newPart); É quase como um laço, porque quando executamos updateAllNames() logo na 1ª vez, ele provavelmente pedirá a si mesmo para ser executada de novo e de novo. Mas a parte importante é que cada vez que a função é chamada, há uma verificação imediata para ver se o trabalho foi feito. Isso se chama “caso básico”, em que não precisamos mais usar a recursão (fazer a função chamar a si mesma).

Além disso, cada vez que usamos a recursão, estamos nos aproximando do caso básico (sem erros ortográficos), porque estamos removendo 1 erro ortográfico de cada vez. Assim, acabaremos nos livrando de todos os erros ortográficos e a recursão é concluída.

Solução do código de exemplo:

(Toque abaixo para revelar)


function updateAllNames(string, oldPart, newPart) {

if (string.includes(oldPart) === false) {

return string;

}

string = string.replace(oldPart, newPart);

return updateAllNames(string, oldPart, newPart);

}

console.log(travelDocument);

console.log(updateAllNames(travelDocument, 'grasshoper', 'grasshopper'));

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

Código Adicional (código oculto executado antes do código do desafio):


let travelDocument =

`Hello grasshoper${pickRandom(['','Travel','Passport','Ticket','Plans','Vacation','Holiday','Trip'])}!

You will be going to ${pickRandom(['New Zealand','Cyprus','the Maldives','Oahu','Palawan','Bali','Maui'])}.

Your travel code is: "${pickRandom(['grasshoper8ugs','im1grasshoper','no1grasshoper'])}"

Enjoy your trip grasshoper!`;

tente deixar dessa forma:
string = string.replace(oldPart, newPart);

return updateAllNames(string, oldPart, newPart);

}


Utilize sempre as teclas de função