如何使用数组#每个乘以数组的元素?

时间:2012-09-02 22:39:58

标签: ruby arrays

我正在尝试编写一个方法,该方法将整数数组作为输入并返回其产品。例如:

product([1,2,3])    # returns 6

我需要使用Array#each而不是注入方法来执行此操作。这就是我想出的,但似乎是不正确的:

def product(array)
  final = 0.0
  array.each do |i|
    final *= i
  end
  return final
end

另外,我怎么能修改这个方法来返回数组中所有奇数整数的乘积,这样

product([1,2,3])     # returns 3, because 2 is even

product([0,-1,-10])  # returns -1, because 0 and -10 are even

4 个答案:

答案 0 :(得分:7)

正如Ramon所说,只需将final初始化为1.0:

def product(array)
  final = 1.0
  array.each { |i| final *= i }
  final
end

然而,在惯用的Ruby中:

[1, 2, 3].inject(:*)

答案 1 :(得分:1)

def find_product(x)
  return x.inject(&:*)
end

x = [5, 6, 7, 10, 15, 18, 32]

find_product(x)

答案 2 :(得分:0)

def product(array)
  final = 1.0
  array.each do |i|
    final *= i
  end
  final
end

答案 3 :(得分:0)

arr = [1,2,3,4,5]

<强>第一

for i in arr
 a=i
  for j in arr
   a *=j
  end
 p a
end

<强>第二

for i in arr
  p product = arr.inject(i , :*)
end