如何解决递归返回素数数组
这是我的代码。我试图将自己的因素推入一个数组,但是我无法坚持到底该怎么做。当我进行console.log记录时,我得到的一切都很好。任何帮助将不胜感激。
primer = (num,factor = 2,) => {
const factors = []
if (num < 2) {
return factors
}
if (num % factor == 0) {
factors.push(factor)
console.log(factor)
primer(num / factor,factor);
}
else {
primer(num,factor + 1);
}
}
解决方法
问题在于,每次递归调用函数时,factors = []
是一个不同的数组。您需要确保将递归结果添加到当前结果中:
primer = (num,factor = 2) => {
const factors = [];
if (num < 2) {
return factors;
}
if (num % factor == 0) {
factors.push(factor);
factors.push(...primer(num / factor,factor,factors));
}
else {
factors.push(...primer(num,factor + 1,factors));
}
return factors; // And remember to return!
}
请注意,每次上面递归时,我们都会创建一个新数组,这不是理想的选择。避免创建新数组的另一种方法是使用额外的factors
数组参数,并确保将其追加:
primer = (num,factor = 2,factors = []) => {
if (num < 2) {
return factors;
}
if (num % factor == 0) {
factors.push(factor);
primer(num / factor,factors);
}
else {
primer(num,factors);
}
return factors;
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。