【发布时间】:2020-11-27 21:38:46
【问题描述】:
试图解决这个编码问题:
编写一个算法来确定一个数字 n 是否“快乐”。
一个快乐的数字是由以下过程定义的数字:从任何正整数开始,将数字替换为其数字的平方和,并重复该过程,直到数字等于 1(它将保持不变),或者它在一个不包括 1 的循环中无限循环。这个过程以 1 结束的那些数字是快乐数字。
如果 n 是一个满意的数字,则返回 True,否则返回 False。
我做了一些工作,但我不确定我做错了什么。将不胜感激一些指针。谢谢!
function isHappy(numba1){
let sum = 0;
numba = numba1.toString().split('')
let numbaArr = numba.map(y => parseInt(y))
for (var x = 0; x< numbaArr.length; x++){
sum += numbaArr[x] ** 2
}
if (sum > 1){
isHappy(sum)
}
else if (sum === 1){
return true
}
else if (sum <= 0){
return false
}
}
【问题讨论】:
-
您需要先检查
numba1 === 1是否在进行其他操作。否则你会陷入无限循环 -
同样嵌套的
isHappy(sum)根本不使用返回真/假 -
@Taplar 你能解释一下为什么这会导致无限循环吗?例如,说 numba1 是 19。在某些时候,总和将是一(这意味着它应该根据第二个 else if 语句返回 true)。但由于某种原因之后它恢复为未定义
-
在您编辑问题之前,我是一个无限循环。原始代码在
isHappy(sum)调用周围没有if (sum > 1)。 -
@Taplar 是的,我编辑了它,但仍然不确定为什么这不起作用
标签: javascript algorithm recursion