4

我正在尝试编写一个方法,该方法将整数数组作为输入并返回它们的乘积。例如:

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

4 回答 4

10

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

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

但是,在惯用的 Ruby 中:

[1, 2, 3].inject(:*)
于 2012-09-02T22:43:40.710 回答
4
def find_product(x)
  return x.inject(&:*)
end

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

find_product(x)
于 2017-03-17T16:54:04.883 回答
1
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
于 2014-12-16T14:31:04.573 回答
0
def product(array)
  final = 1.0
  array.each do |i|
    final *= i
  end
  final
end
于 2012-09-02T22:43:56.933 回答