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 None, uma string vazia ou não existir nenhum item repetido.

Exemplos

recur_index("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

recur_index("AKEDCBERSD") ➞ {"E": [2, 6]}

recur_index("DXKETRETXD") ➞ {"E": [3, 6]}

recur_index("ABCKPEPGBC") ➞ {"P": [4, 6]}

recur_index("ABCDEFGHIJ") ➞ {}

recur_index(None) ➞ {}

Observaçõ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 None e string vazia para evitar resultados indesejados.
  • 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 ou se ainda não tiver compreendido totalmente o conceito antes de realizar este desafio ou precisar de mais informações.
  • Uma versão não recursiva deste desafio pode ser encontrada aqui.