вопрос из задачника js не понятен
Счастливое число-это то число, в результате последовательного сложения квадратов цифр которой, при какой-то итерации получается 1.
На пример число 23 счастливое число, потому-что:
Таким образом, в результате трех шагов мы получили 1, что подтверждает, что 23 это счастливое число. Необходимо разработать функцию, которая получает число и возвращает true, если данное число счастливая и false в противном случае.
Заметим, что для определения счастливых чисел на каждом шагу получается какое-то
число (в нашем примере 13,10,1). если число не счастливая, то в
числах встречаются повторяющиеся цифры.
задачу нужно решить под 4 варианта:
- на входе:23 на выходе: true
- на входе:44 на выходе: true
- на входе:10 на выходе: true
- на входе:28 на выходе: true
ещё есть подсказка:
при поиске счастливых чисел на каждом шагу получается определенное 'y' число, цифры которой нужно попытаться сложить. Если число не счастливая, то число 'y' может повториться в каком-то i шаге. Следовательно, если число 'y' встречается более одного раза внутри цикла, необходимо вернуть false
Ответы (2 шт):
Берешь число (например 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 + обратить внимание на подсказку и подумать как защититься от бесконечного цикла.
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))
