Как сделать функцию, которая возвращает факториал каждого целого в массиве - PullRequest
0 голосов
/ 22 декабря 2018

Этот вопрос был удален

Ответы [ 4 ]

0 голосов
/ 22 декабря 2018
function getFactorials(nums) {
  return numbers = Array.from(nums).map(function factorializeSingleNumber(num) {
    if (num == 0 || num == 1) return 1
    else return num * factorializeSingleNumber(num - 1)
  })
}

Лучший способ найти решение этой проблемы - решить проблему.Таким образом, в этом случае работает решение, которое факторизует одно число.Когда это работает, вы можете добавить этот «рабочий код» в карту или цикл для работы с массивом.

Мое вышеупомянутое решение использует рекурсию, но может быть и простым циклом for

0 голосов
/ 22 декабря 2018

Этот метод принимает массив чисел и возвращает массив их факторных чисел,

function getFactorials(array) {
        var facArray = [];
        for (var j = 0; j < array.length; j++) {
            num = array[j];
            if (num === 0 || num === 1)
                return 1;
            for (var i = num - 1; i >= 1; i--) {
                num *= i;
            }
            facArray.push(num);
        }
        return facArray;

    }

console.log(getFactorials([4, 3, 2]));
0 голосов
/ 22 декабря 2018

Прежде всего, создайте рекурсивную функцию, которая вычисляет факториал одного числа:

function factorial(num) {
    if (num == 0 || num == 1) {
        return 1;
    }
    return num * factorial(num - 1);
}

Затем, чтобы сделать это для массива, просто используйте Array.prototype.map() следующим образом:

function getFactorials(arr) {
    var result = arr.map(x => factorial(x));
    return result;
}

Вот демонстрация:

 

function factorial(num) {
    if (num == 0 || num == 1) {
        return 1;
    }
    return num * factorial(num - 1);
}

function getFactorials(arr) {
    var result = arr.map(x => factorial(x));
    return result;
}

console.log(getFactorials([4, 8, 10])); 
console.log(getFactorials([]));
console.log(getFactorials([1, 2, 3, 4, 5]));

Надеюсь, это поможет!

0 голосов
/ 22 декабря 2018

Вам нужно разделить функцию на две функции: одну для итерации массива и сбора вычисленных значений, а другую для получения коэффициента числа.

function getFactorials(nums) {
    var result = [],
        i;
        
    for (i = 0; i < nums.length; i++) {
        result.push(getFactorial(nums[i]));
    }
    return result;
} 

function getFactorial(n) {
   if (n === 0 || n === 1) return 1;
   return n * getFactorial(n - 1);
}

console.log(getFactorials([]));
console.log(getFactorials([3]));
console.log(getFactorials([3, 4, 5]));
console.log(getFactorials([3, 8, 9, 10]));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...