Recursão: Isolado ou agrupado?

Escreva uma função que extraia o valor máximo de um array de números. Se houver dois ou mais valores máximos, retorne-os como um array; caso contrário, retorne o número. Esse processo poderia ser relativamente fácil com algumas das funções integradas de Array, mas a abordagem exigida é recursiva.

Exemplos

isoGroup([31, 7, 2, 13, 7, 9, 10, 13]) ➞ 31

isoGroup([1, 3, 9, 5, 1, 7, 9, -9]) ➞ [9, 9]

isoGroup([97, 19, -18, 97, 36, 23, -97]) ➞ [97, 97]

isoGroup([-31, -7, -13, -7, -9, -13]) ➞ [-7, -7]

isoGroup([-1, -3, -9, -5, -1, -7, -9, -9]) ➞ [-1, -1]

isoGroup([107, 19, -18, 79, 36, 23, 97]) ➞ 107

Observações

  • Você pode ler mais sobre recursão (consulte a aba Resources) se ainda não estiver familiarizado com ela ou não tiver entendido completamente o conceito antes de começar este desafio.
  • Se você acha que recursão é divertida, pode encontrar uma coleção desses desafios aqui.