假设我有一个数组A = [1,2,3,4,5]
如何将所有元素与ruby相乘并获得结果? 1 * 2 * 3 * 4 * 5 = 120
如果有元素0怎么办?我怎么能忽略这个元素?
答案 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