gpt4 book ai didi

Javascript,一个简单的递归函数

转载 作者:行者123 更新时间:2023-12-01 15:52:47 25 4
gpt4 key购买 nike

我需要帮助来实现一个递归函数。这是我第一次尝试在我们新手第一次学习的标准“阶乘”之外进行递归。

我能够在控制台中得到正确答案,但我不知道如何让我的函数识别出它已经产生了正确答案。

挑战:“编写一个算法来确定一个数字是否“快乐”。

一个快乐的数字是由以下过程定义的一个数字:从任何正整数开始,将数字替换为其数字的平方和,然后重复该过程直到数字等于 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 循环并进行了不同的尝试,但没有运气。任何帮助将不胜感激。

最佳答案

您可以先返回给定号码的支票(提前退出)并使用 Set对于看到的数字

  • 如果有,很高兴返回true,
  • 是之前看到的数字,那么就得到一个循环,然后返回false
  • 或返回递归调用的结果以及所有数字的平方和。

function isHappy(value, seen = new Set) {
if (value === 1) return true;
if (seen.has(value)) return false;
seen.add(value);
return isHappy(value.toString().split('').reduce((s, d) => s + d * d, 0), seen);
}

console.log(isHappy(1));
console.log(isHappy(19));
console.log(isHappy(4));
console.log(isHappy(22));

关于Javascript,一个简单的递归函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61025353/

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