Recursão: Número feliz

Um número feliz é um número que produz um 1 ao somar repetidamente os quadrados dos seus dígitos. Se esse processo entrar em um ciclo infinito que passa por 4, o número é considerado um número infeliz.

Cálculo de exemplo:

139 = 1^2 + 3^2 + 9^2 = 1 + 9 + 81 = 91
91 = 9^2 + 1^2 = 81 + 1 = 82
82 = 8^2 + 2^2 = 64 + 4 = 68
68 = 6^2 + 8^2 = 36 + 64 = 100
100 = 1^2 + 0^2 + 0^2 = 1 + 0 + 0 = 1

Paramos em 1 (porque, se continuássemos, entraríamos em um ciclo infinito); portanto, 139 é um número feliz.

67 = 6^2 + 7^2 = 36 + 49 = 85
85 = 8^2 + 5^2 = 64 + 25 = 89
89 = 8^2 + 9^2 = 64 + 81 = 145
145 = 1^2 + 4^2 + 5^2 = 1 + 16 + 25 = 42
42 = 4^2 + 2^2 = 16 + 4 = 20
20 = 2^2 + 0^2 = 4 + 0 = 4 

Paramos em 4 (porque, se continuássemos, entraríamos em um ciclo infinito); portanto, 67 é um número infeliz.

Crie uma função que aceite um número e determine se ele é um número feliz ou não. Retorne true se for e false caso contrário.

Exemplos

isHappy(67) ➞ false

isHappy(89) ➞ false

isHappy(139) ➞ true

isHappy(1327) ➞ false

isHappy(2871) ➞ false

isHappy(3970) ➞ true

Observações

  • Espera-se que você resolva este desafio usando recursão.
  • Você pode consultar a aba Recursos para obter mais detalhes sobre recursão em Java.
  • Uma versão não recursiva deste desafio pode ser encontrada aqui.
  • Se você acha recursão divertida, há uma coleção desses desafios aqui.