【问题标题】:What does << do when used to assign an argument in a Ruby method?<< 在 Ruby 方法中用于分配参数时会做什么?
【发布时间】:2012-03-07 06:39:49
【问题描述】:

我在 http://projecteuler.net/ 上看到了这段出色的代码,但我无法将注意力集中在其中的某个部分上。

def generate(n, factors=[])
  return factors if n == 1
  new_factor = (2..n).find {|f| n % f == 0}
  generate(n / new_factor, factors << [new_factor])
end

factors = []
generate(4356463234, factors)

问题:当 generate 函数在第 4 行调用自身时,factors 做了什么?

感谢您的洞察力!

【问题讨论】:

    标签: ruby function recursion argument-passing tail-recursion


    【解决方案1】:

    它将[new_factor] 附加到factors 数组的末尾。

    【讨论】:

    • 感谢 Finbarr 的快速答复!而已!刚刚对其进行了更多研究。
    【解决方案2】:

    factors 是一个数组,显然是数组。 factors &lt;&lt; [new_factor][new_factor](一个新创建的包含new_factor 的元素数组)附加到factors 的末尾并返回factors。这导致factors 作为第二个参数传递给generate

    【讨论】:

    • 确实如此。非常感谢您的回答 Retief。 :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-06-13
    • 2019-05-19
    • 1970-01-01
    • 2019-12-25
    • 2017-03-18
    • 2012-10-31
    • 1970-01-01
    相关资源
    最近更新 更多