所以我正在编写一个简单的代码来查找数字的所有素因,我可以使用for循环来完成此操作,但是我尝试了这种方法,因此如果有人可以帮助我解决未定义的输出。我尝试使用for循环,但仍有效,但是使用此方法时,我不确定。
let arr1=[];
let recursion={
primeFactorize:(num,n=2)=>
{
if(num%n==0 && n<=num)
{
arr1.push(n);
num/=n;
recursion.primeFactorize(num,n+=1);
}
else if(n>num){
return arr1;
}
else{
recursion.primeFactorize(num,n+=1);
}
}
};
console.log(recursion.primeFactorize(35));
期望的结果是数组,但我得到的是不确定的。
答案 0 :(得分:1)
该函数不返回任何内容,它只是构建数组。尝试改为记录阵列。
let arr1=[];
let recursion={
primeFactorize:(num,n=2)=>
{
if(num%n==0 && n<=num)
{
arr1.push(n);
num/=n;
recursion.primeFactorize(num,n+=1);
}
else if(n>num){
return arr1;
}
else{
recursion.primeFactorize(num,n+=1);
}
}
};
recursion.primeFactorize(35)
console.log(arr1);
答案 1 :(得分:0)
在递归情况下,您不返回任何内容。将return
放在recursion.primeFactorize
前面的两个地方。