此算法的目标是取一个数字的每个数字的平方,将它们加在一起,然后继续重复直到1返回数字。我确定算法可以正常工作,但是我不能完全理解return。为什么这不起作用?
const n = 19;
const sumSquare = (n) => {
const N = n.toString();
let sum = 0;
for (let digit of N) {
const product = +digit * +digit;
sum += product;
}
console.log(sum);
if (sum === 1) {
return true;
} else {
sumSquare(sum);
}
};
console.log(sumSquare(n));Run Code Online (Sandbox Code Playgroud)
您需要return sumSquare(sum);,然后将完成返回值,true如下所示:
const n = 19;
const sumSquare = (n) => {
const N = n.toString();
let sum = 0;
for (let digit of N) {
const product = +digit * +digit;
sum += product;
}
console.log(sum);
if (sum === 1) {
return true;
} else {
return sumSquare(sum);
}
};
console.log('result:', sumSquare(n));Run Code Online (Sandbox Code Playgroud)
我们还可以简化整个if语句,使其看起来像这样:
return sum === 1 || sumSquare(sum);
Run Code Online (Sandbox Code Playgroud)
return sum === 1 || sumSquare(sum);
Run Code Online (Sandbox Code Playgroud)