Как говорит mquander, numbers
, по-видимому, массив.
Так что вам нужно что-то вроде:
puts(numbers.map { |n| factorial(n) })
И, кстати, ваша ошибка не имеет ничего общего с рекурсией.
Подтверждение теории Маквандера:
> numbers = [1,2,3]
> puts factorial(numbers)
TypeError: can't convert Fixnum into Array
И просто из любопытства, вот как вы реализуете факториал в ruby без рекурсии, чтобы вы не получили переполнение стека для больших чисел.
def factorial(n)
(1..n).inject(1) { |ac, x| ac * x }
end