Olá! Fiquei com um pouco de dúvida sobre a recursão do código implementado e queria entender melhor, alguém poderia me ajudar, por favor?
Nesse código abaixo (desenvolvido na aula):
function quickSort(array, esquerda, direita) {
let indiceAtual = particiona(array, esquerda, direita);
if (esquerda < indiceAtual - 1) {
quickSort(array, esquerda, indiceAtual - 1);
}
if (indiceAtual < direita) {
quickSort(array, indiceAtual, direita);
}
return array;
}
A função "quickSort" retorna um array, porém quando chamamos ela dentro do bloco "if", para onde esse array que ela retorna vai?
Se estivesse escrito algo do tipo "array = quickSort()", faria mais sentido pra mim, pois o valor retornado será guardado. Então, como funciona essa chamada do quickSort dentro do if?
Fiquei meio confuso, pois geralmente nas funções recursivas que retornam algo, nós guardamos esse valor... Por exemplo:
function mergeSort(array) {
if (array.length > 1) {
const meio = Math.floor(array.length / 2);
const parte1 = mergeSort(array.slice(0, meio));
const parte2 = mergeSort(array.slice(meio, array.length));
array = ordena(parte1, parte2);
}
return array;
}
Nessa função acima, o "mergeSort" retorna um array também, porém o valor desse array é guardado em variáveis, então o código faz total sentido pra mim. Essa mesma lógica é usada em outros códigos recursivos, então fiquei com dúvida do porquê chamamos daquela forma dentro do bloco if, sem guardar o valor...
Meu chute é que automaticamente ele atualize o valor do array, fazendo algo do tipo "array = quickSort()", mas não tenho certeza e não consegui encontrar pesquisando na internet... Poderiam me ajudar nisso?