@nataleya2010

Как вывести ответ в одну строку при рекурсии?

Надо найти все множители числа и вывести их в возрастающем порядке. Например: 18=2*3*3. Найти получилось, но вывести их так, как требуется в задании - нет. Как это сделать? Мой код:

function dividerFunctionTo(num, divider=2) {
    if(num<=0){console.log("введите число больше нуля");return;}
    if (num==1){return divider=1;}else
    if (num%divider==0){
        console.log(`${num} || ${divider}` );
        return dividerFunctionTo(num/divider, divider);
    }else
    {
        return dividerFunctionTo(num, divider+1);
    }

}

let numberFixedTo = +prompt("введите число");
dividerFunctionTo(numberFixedTo);
  • Вопрос задан
  • 41 просмотр
Решения вопроса 1
0xD34F
@0xD34F
Вместо вывода текущего результата в консоль возвращайте массив, состоящий из текущего результата и результатов рекурсивного вызова:

function getDividers(num, divider) {
  return num === 1
    ? []
    : num % divider
      ? getDividers(num, divider + 1)
      : [ divider, ...getDividers(num / divider, divider) ];
}

Ну а с полученным массивом можете делать что там вам надо:

function showDividers(num) {
  if (!Number.isInteger(num) || num < 2) {
    throw 'fuck off';
  }

  console.log(`${num} = ${getDividers(num, 2).join(' * ')}`);
}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы