Факторализация числа в JavaScript

В настоящее время я прохожу курс Free Code Camp, и он просит меня вернуть факториал для любого заданного числа. Тем не менее, я как бы застрял на вопросе (пожалуйста, простите меня, математика не моя сильная сторона, ха-ха). Вот что спрашивает:

Если целое число представлено буквой n, факториал представляет собой произведение всех положительных целых чисел, меньших или равных n. Факториалы часто обозначаются сокращенной записью n! Например: 5! = 1 * 2 * 3 * 4 * 5 = 120f

И вот стартовый код:

function factorialize(num) {
return num;
}

factorialize(5);

Я не ищу прямого ответа на вопрос, а просто хочу знать, с чего начать. Спасибо за любую помощь заранее!


person Jelani Thompson    schedule 29.06.2015    source источник
comment
просто. вам нужен цикл от 1 до номера вашей функции. И множить эти числа и возвращать.   -  person Alp    schedule 30.06.2015
comment
думать рекурсивно, вернуть num*factorialize(num-1), если num›1, иначе вернуть 1   -  person depperm    schedule 30.06.2015
comment
Взято из Function на сайте developer.mozilla.org function fac(n) { return n < 2 ? 1 : n * fac(n-1) };   -  person surfmuggle    schedule 27.11.2016


Ответы (3)


Есть два способа сделать это. Первый в цикле, а второй в рекурсивной функции.

Вариант цикла такой:

function factorialize(num) {

  for(var answer=1;num>0;num--){
    answer*=num;
  }

  return answer;
}

И рекурсивный такой.

function factorialize(num) {

  if(num===0){
    return 1;
  }
  else{
    return num*factorialize(num-1);
  }
}

Оба они будут работать со всеми положительными целыми числами.

person Iren Saltalı    schedule 18.12.2015

function factorialize(num) {
    var myNum = 1;
    for (i=1; i<=num;i++){
        myNum = myNum * i;
    }
    return myNum;
}
factorialize(5);

Сначала я создал переменную для хранения нашего ответа (myNum).

Затем я создал цикл, который начинался с 1 и до (включительно) значения числа, которое мы факторизуем... По мере выполнения цикла мы умножаем myNum на значение i, сохраняя новое значение как myNum, поэтому оно будет умножаться на следующее число в цикле...

После завершения цикла мы возвращаем наш ответ, используя «return myNum».

person Mark    schedule 03.09.2015

Примечание. В этом ответе объясняется, какой тип цикла использовать, и подсказки о том, как отформатировать цикл, чтобы получить факториал 5, чтобы получить базовый формат перед использованием num

На примере 5! = 1 * 2 * 3 * 4 * 5 = 120, вы можете видеть, что существует последовательность чисел, которые начинаются с 1, заканчиваются на 5 и увеличиваются на 1. Вы также можете видеть, что для каждого числа от 1 до 5 вы нужно умножать на следующий, снова и снова, чтобы получить факториал.

Цикл for используется для повторения определенного блока кода известное количество раз. В этом случае вы знаете, что количество раз равно 5 (он же 1,2,3,4,5). Конкретный блок кода — это то, что вам нужно выяснить на основе ответа, который вы пытаетесь получить (в данном случае это 5! = 1*2*3*4*5 = 120).

Советы по циклу For: когда вы думаете о том, как написать условия цикла for: начните приращение с 1, завершите приращение на 5 и приращение на 1 (1,2,3,4,5)

При написании блока кода, который будет воздействовать на каждое число, подумайте о соотношении, которое должно иметь каждое число, чтобы ваш код, по сути, делал это: 1*2*3*4*5.

person Joanna Jogramma    schedule 24.08.2015