Получение результата как неопределенного при выяснении основных факторов - PullRequest
0 голосов
/ 13 июня 2019

Так что я работаю над простым кодом, чтобы найти все простые множители числа, я могу сделать это, используя цикл 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));

Ожидаемый результат - массив, но я получаю неопределенное значение.

Ответы [ 2 ]

1 голос
/ 13 июня 2019

Функция ничего не возвращает, она просто строит массив.Попробуйте вместо этого зарегистрировать массив.

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);
0 голосов
/ 13 июня 2019

Вы ничего не возвращаете в рекурсивных случаях.Поместите return перед recursion.primeFactorize в обоих местах, где оно появляется внутри себя.

...