Найти x количество факториалов, начиная с 0, используя рекурсию. 5 == [1,1,2,6,24] - PullRequest
0 голосов
/ 13 октября 2019

Я пытаюсь получить первые num факториалов.

Например, если num равно 6, то мы хотели бы получить первые 6 факториалов: 1,1,2,6,24,120

Ниже мое текущее решение. Это всегда возвращает дополнительный факториал. Поэтому, если num равно 6, возвращается 7 факториалов.

def factorials_rec(num)  
  return [1] if num == 1
  arr = factorials_rec(num-1) 
  arr << num * arr.last
end

Результат [1, 1, 2, 6, 24, 120, 720]

Желаемый результат [1, 1, 2, 6, 24, 120]

Мне нужно только 6 факториалов, но возвращаются 7.

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

Я пытался

base case = return [1,1] if num == 2, etc..
arr << num * arr.last unless arr.length >= num, etc...

1 Ответ

2 голосов
/ 13 октября 2019

Попробуйте исправить последнюю строку на:

arr << (num-1) * arr.last
...