gpt4 book ai didi

Javascript Happy Numbers 不工作

转载 作者:行者123 更新时间:2023-11-29 17:11:14 26 4
gpt4 key购买 nike

这里我有一个函数,它应该将一个数字 n 放入 disHappy(n) 以检查是否所有
[n-0) 中的 n 个很高兴。

Happy Numbers wikipedia

如果我只运行 happyChecker(n),我可以看出 7 是快乐的,但 disHappy(n) 不会显示它。就好像没有收到真实的一样。我到处都使用了 console.log() 的 并且 happyChecker(n) 显示了一个应该返回 true 的数字。当我为 if(newNum===1)return true; 上方放置一个 console.log() 时,它显示它分支了进入那个分支,但它似乎没有返回 true。

  function happyChecker(n) {
var arr = [];
var newNum = 0;
//here I split a number into a string then into an array of strings//
num = n.toString().split("");
for (var i = 0; i < num.length; i++) {
arr[i] = parseInt(num[i], 10);
}
//here I square each number then add it to newNum//
for (var i = 0; i < arr.length; i++) {
newNum += Math.pow(arr[i], 2);
}
//here I noticed that all unhappy numbers eventually came into one of these three//
//( and more) numbers, so I chose them to shorten the checking. A temporary solution for sure//
if (newNum === 58 || newNum === 4 || newNum == 37) {
return false;
}

if (newNum === 1) {

return true;
} else {
happyChecker(newNum);
}

}

function disHappy(num) {
for (j = num; j > 0; j--) {
if (happyChecker(j)) {
console.log(j + " is a Happy Number. It's so happy!!!.");
}
}
}

最佳答案

递归时,需要返回返回的值:

 if (newNum === 1) {

return true;
} else {
return happyChecker(newNum);
}

您还应该使用 var 声明“num”。

我通常不是“代码高尔夫球手”,但这是一个很好的例子,说明 Array 原型(prototype)上的(新式)迭代器实用方法如何清理代码。您可以使用.reduce() 函数遍历数字字符数组,一次完成平方和求和的工作:

var newNum = n.toString()
.split('')
.reduce(function(sum, digit) {
return sum + (+digit * +digit);
}, 0);

调用 .toString() 返回一个字符串,然后 .split('') 给你一个数组。然后 .reduce() 以 0 的初始总和开始,并且对于数组的每个元素(每个数字),它都会将其与该数字的平方相加。 (我只是使用了 + 一元运算符而不是 parseInt();我们确信每个字符串都是有效数字和整数。)

关于Javascript Happy Numbers 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21336972/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com