Ruby:将数组的所有元素相乘

时间:2011-08-13 14:02:51

标签: ruby

假设我有一个数组A = [1,2,3,4,5]

如何将所有元素与ruby相乘并获得结果? 1 * 2 * 3 * 4 * 5 = 120

如果有元素0怎么办?我怎么能忽略这个元素?

4 个答案:

答案 0 :(得分:26)

这是inject(也称为reduce

的教科书案例
[1, 2, 3, 4, 5].inject(:*)

如下所示,为避免零,

[1, 2, 3, 4, 5].reject(&:zero?).inject(:*)

答案 1 :(得分:1)

还有另一种计算这个阶乘的方法! 如果您愿意,您可以将最后一个数字定义为n。

在这种情况下, n = 5

从那里,它会是这样的:

(1..num).inject(:*)

这将为您提供 120 。此外,.reduce()的工作方式相同。

答案 2 :(得分:0)

嗯,这是一种虚拟方式,但它有效:)

A = [1, 2, 3, 4, 5]
result = 1
A.each do |i|
    if i!= 0
        result = result*i
    else
        result
    end
end
puts result

答案 3 :(得分:0)

如果您想稍后了解您的代码,请使用:假设A = 5,我用n而不是A

n = 5
n.times {|x| unless x == 0; n =  n * x; ++x; end} 
p n

为了推进它,你会:

A = [1,2,3,4,5]
arb = A.first
a = A.count
a.times {|x| arb = arb * A[x]; ++x}
p arb