ruby - (Ruby) 第一个 x 递归数字

标签 ruby recursion factorial

我想编写一个递归方法,返回第一个 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/

相关文章:

performance - Lisp:衡量函数的性能

ruby-on-rails - 独立 Ruby 脚本中的 Ruby Gem

ruby - 如何在纯 ruby​​ 应用程序中的 Resque 工作人员内部使用 Logger

algorithm - 这个算法的空间复杂度是多少?

javascript - 从 URL 构建多维对象

java - 递归返回链表中的元素数量

c++ - "compute n! under modulo p"背后的数学?

Ruby 传递方法(?)作为参数?

ruby - 如何将单词转换为它们的等效数字?

c - 为什么153的阶乘在下面的程序中失败了