Số hạnh phúc (Happy Number)
Số hạnh phúc: thay bằng tổng bình phương chữ số, cuối cùng về 1. Nếu lặp lại số đã xuất hiện → số không hạnh phúc.
Ví dụ: 13 là hạnh phúc vì 1²+3²=10, 1²+0²=1. 36 không hạnh phúc.
Viết hàm đệ quy kiểm tra. Dùng object lưu số đã xuất hiện, gặp lại thì false, về 1 thì true.
Ví dụ
const squareSumRecursively = (n, res = 0) => { if(n){ return squareSumRecursively(Math.floor(n/10), res+Math.pow((n%10),2)); }; return res; }; const isHappy = (num, map = {}) => { if(num !== 1){ if(map[num]){ return false; } map[num] = 1; return isHappy(squareSumRecursively(num), map); }; return true; } console.log(isHappy(36)); console.log(isHappy(13)); console.log(isHappy(36)); console.log(isHappy(23));Kết quả
Đầu ra console:
false true false true