Recursión: Número feliz

Un número feliz es un número que produce un 1 al sumar repetidamente los cuadrados de sus dígitos. Si ese proceso entra en un ciclo infinito que pasa por 4, se dice que el número es un número infeliz.

Cálculo de ejemplo:

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

Nos detuvimos en 1 (porque, si continuáramos, entraríamos en un ciclo infinito); por lo tanto, 139 es un 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 

Nos detuvimos en 4 (porque, si continuáramos, entraríamos en un ciclo infinito); por lo tanto, 67 es un número infeliz.

Crea una función que acepte un número y determine si el número es un número feliz o no. Devuelve true si lo es y false en caso contrario.

Ejemplos

isHappy(67) ➞ false

isHappy(89) ➞ false

isHappy(139) ➞ true

isHappy(1327) ➞ false

isHappy(2871) ➞ false

isHappy(3970) ➞ true

Notas

  • Se espera que resuelvas este desafío mediante recursión.
  • Puedes consultar la pestaña Recursos para obtener más detalles sobre la recursión en Java.
  • Puedes encontrar una versión no recursiva de este desafío aquí.
  • Si te parece divertida la recursión, puedes encontrar una colección de estos desafíos aquí.