使用递归 JavaScript 确定快乐数字
javascriptweb developmentobject oriented programming更新于 2025/9/30 3:24:17
快乐数字
快乐数字是指当用每个数字的平方和替换时最终达到 1 的数字。而如果在此过程中任何数字重复,则循环将无限运行,这样的数字被称为不快乐数字。
例如 -13 是一个快乐数字,因为,
1^2 + 3^2 = 10 和, 1^2 + 0^2 = 1
另一方面,36 是一个不快乐数字。
我们需要编写一个使用递归来确定数字是否是快乐数字的函数。
那么,让我们写出这个函数。这个函数的关键是我们必须记录已经出现的数字,如果相同的数字再次出现,则返回 false,否则如果平方数字加起来为 1,则返回 true。
我们将使用一个对象来跟踪已经出现的数字,我们也可以使用 set 或 Map,但一个简单的对象也可以为我们做到这一点。
这样做的代码将是 −
示例
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));
输出
控制台中的输出将是 −
false true false true
相关文章
有用资源
javascript 参考教程 - 该教程包含有关 javascript 的更多信息:https://www.cainiaomax.com/javascript/

