我想编写一个递归方法,返回第一个 num
个递归数字。
这是迄今为止我的代码:
def recursive_factorials(num)
return [1] if num == 1
arr = recursive_factorials(num-1)
arr << num * arr.last
end
不知道我做错了什么。 num = 6
的预期结果是 [1, 1, 2, 6, 24, 120]
,我得到 [1, 2, 6, 24 , 120, 720]
,所以我可能很接近,但真的不知道。
如有任何帮助,我们将不胜感激。另外,如果我没有正确使用递归,请让我出去。
最佳答案
问题是关于递归的,但你也可以使用迭代,它更快:
def factorials(num)
m = 1
(0...num).map {|e| e.zero? ? 1 : m *= e }
end
factorials(6)
=> [1, 1, 2, 6, 24, 120]
或者通过使用哈希内存(我想说它也是递归):
factorials = Hash.new { |h, k| h[k] = h[k-1] * k }.update(0 => 1)
factorials.values_at(*(0..5))
=> [1, 1, 2, 6, 24, 120]
关于ruby - (Ruby) 第一个 x 递归数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43109387/