我正在尝试编写一个方法,该方法将整数数组作为输入并返回其产品。例如:
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
答案 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