Quando se chama a função mergeSort() dentro dela mesma, isso não cria um loop? Que será realizado até a condição do "if" não ser atendida? Não estava acostumado a chamar a própria função dentro dela mesma, e estranhei um pouco isso.
Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!
Quando se chama a função mergeSort() dentro dela mesma, isso não cria um loop? Que será realizado até a condição do "if" não ser atendida? Não estava acostumado a chamar a própria função dentro dela mesma, e estranhei um pouco isso.
Isto se chama recursividade!
Para que um LOOP não ocorra é necessário definir uma condição de terminação de forma correta pois, às vezes, até mesmo a condição de terminação pode ser a causa do LOOP. Portanto, é preciso analisar e avaliar bem o problema que está sendo resolvido de forma recursiva e como ele deverá terminar, sem entrar em LOOP.