Recursão: primeiro índice de recorrência
Crie uma função recursiva que identifique o primeiro item que tenha se repetido no argumento de string fornecido. Ela retorna o item identificado com o índice em que apareceu pela primeira vez e o índice seguinte em que reapareceu — tudo como um objeto; ou um objeto vazio se o argumento fornecido for null, undefined, uma string vazia ou não existir nenhum item repetido.
Exemplos
recurIndex("KDXTDATTDD") ➞ {"D": [1, 4]}
// D first appeared at index 1, resurfaced at index 4
// though D resurfaced yet again at index 8, it's no longer significant
// T appeared and resurfaced at indices 3 and 6 but D completed the cycle first
recurIndex("AKEDCBERSD") ➞ {"E": [2, 6]}
recurIndex("DXKETRETXD") ➞ {"E": [3, 6]}
recurIndex("ABCKPEPGBC") ➞ {"P": [4, 6]}
recurIndex("ABCDEFGHIJ") ➞ {}
recurIndex(undefined) ➞ {}Observações
- Espera-se que os participantes do desafio encontrem uma solução usando o conceito de recursão ou a chamada abordagem recursiva.
- Você pode ler mais sobre recursão (consulte a aba Resources) se ainda não estiver familiarizado com ela, se ainda não tiver compreendido totalmente o conceito antes de realizar este desafio ou se precisar de mais informações.
- Não haverá exceções para tratar; todas as entradas são strings e objetos semelhantes a strings. Você só precisa ter cuidado extra com entradas
null,undefinede string vazia para evitar um Uncaught RangeError ou exceder o tamanho máximo de chamadas da pilha. - Uma versão não recursiva deste desafio pode ser encontrada aqui.
- Se você acha que recursão é divertida, pode encontrar aqui uma coleção desses desafios.