вопрос из задачника js не понятен

Счастливое число-это то число, в результате последовательного сложения квадратов цифр которой, при какой-то итерации получается 1.

На пример число 23 счастливое число, потому-что:

введите сюда описание изображения

Таким образом, в результате трех шагов мы получили 1, что подтверждает, что 23 это счастливое число. Необходимо разработать функцию, которая получает число и возвращает true, если данное число счастливая и false в противном случае.

Заметим, что для определения счастливых чисел на каждом шагу получается какое-то введите сюда описание изображения число (в нашем примере 13,10,1). если число не счастливая, то в введите сюда описание изображения числах встречаются повторяющиеся цифры.

задачу нужно решить под 4 варианта:

  1. на входе:23 на выходе: true
  2. на входе:44 на выходе: true
  3. на входе:10 на выходе: true
  4. на входе:28 на выходе: true

ещё есть подсказка:

при поиске счастливых чисел на каждом шагу получается определенное 'y' число, цифры которой нужно попытаться сложить. Если число не счастливая, то число 'y' может повториться в каком-то i шаге. Следовательно, если число 'y' встречается более одного раза внутри цикла, необходимо вернуть false


Ответы (2 шт):

Автор решения: adudnik.ru

Берешь число (например 44). Разделяешь на 2 числа (4 и 4). Возводишь оба в степерь 4*4 = 16 + 4 * 4 = 32. Теперь число 32. Берешь это число и разделяешь на 2 отдельных числа (3 и 2) возводишь 3 в степень, возводишь 2 в степень. Складываешь. 3*3 + 2*2 = 13 теперь у тебя число 13. Разделяешь на 2 отдельных числа 1 и 3. 1*1 + 3*3 = 10, теперь число 10. 1*1 = 1, 0*0 = 0. 1+0=1

Теперь надо сделать всё то же самое, но на JS + обратить внимание на подсказку и подумать как защититься от бесконечного цикла.

→ Ссылка
Автор решения: Vahan Muradyan

function solution(x) {
    if (x === 4) return false;
    const u = x.toString().split('').reduce(((ac,cv) => ac + Math.pow(cv,2)), 0);
    if (u === 1) return true;
    else return solution(u);
}
console.log(solution(10))
console.log(solution(23))
console.log(solution(44))
console.log(solution(28))

→ Ссылка