【发布时间】:2020-04-04 19:45:18
【问题描述】:
我需要帮助来实现一个递归函数。这是我第一次尝试在我们新手首先学习的标准“阶乘”之外进行递归。
我能够在控制台中得到正确的答案,但我不知道如何让我的函数识别出它已经产生了正确的答案。
挑战:“编写一个算法来确定一个数字是否“快乐”。
一个快乐的数字是由以下过程定义的数字:从任何正整数开始,将数字替换为其数字的平方和,并重复该过程,直到数字等于 1(它将保持不变),或者它在一个不包括 1 的循环中无限循环。这个过程以 1 结束的那些数字是快乐数字。”
我的尝试:
let num = 19;
let isHappy = (n) => {
let sNum = `${n}`;
let sArray = sNum.split('');
let nArray = sArray.map(el => Number(el))
let total = nArray.reduce((acc, curr) => {
return acc += curr * curr
}, 0);
if(isHappy(total) === 1) {
return true
} else {
return false
}
}
isHappy(num)
我在执行基本案例测试时使用了 while 循环并进行了不同的尝试,但没有运气。任何帮助将不胜感激。
【问题讨论】:
-
你有一些数字的例子吗?他们是否满意?
-
对不起,我忘了添加测试变量(num=19),很高兴
-
您需要提供周期检测,即。使用您之前尝试过的所有数字的集合
标签: javascript recursion